Questão nº 14

Questão de Tecnologia da Informação · FGV CVM 2024 (nº 14)

FGV2024Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8)Tecnologia da Informação
Gabarito: Dver comentário ↓

A analista Camila executou o seguinte script em JavaScript:

```javascript
const map1 = new WeakMap();
const e1 = {};
map1.set(e1, e1);
console.log(map1.get(e1))
```

Logo após, Camila executou outro script em JavaScript:

```javascript
const map2 = new WeakMap();
const e2 = "dois";
map2.set(e2, e2);
console.log(map2.get(e2))
```

O interpretador JavaScript usado por Camila suporta a estrutura de dados WeakMap do JavaScript.
Os scripts executados por Camila imprimiram no console, respectivamente:

Resposta comentada

Gabarito Alternativa D

Um `WeakMap` em JavaScript é uma coleção especial que só aceita objetos como chaves. A grande diferença de um `Map` comum é que as chaves em um `WeakMap` são "fracas", o que significa que se um objeto usado como chave não for mais referenciado em nenhum outro lugar do seu código, ele pode ser automaticamente removido da memória pelo coletor de lixo, e a entrada correspondente no `WeakMap` desaparece.

(A) Incorreta: O primeiro script não gera `TypeError`, pois usa um objeto como chave.
(B) Incorreta: O primeiro script não gera `TypeError`, e o segundo script gera `TypeError`, não a string "dois".
(C) Incorreta: Não há `SyntaxError` em nenhum dos scripts, e o segundo script gera `TypeError`.
(D) Correta: O primeiro script usa um objeto vazio (`{}`) como chave, o que é permitido em um `WeakMap`. O método `get` retorna o valor associado, que é o próprio objeto vazio. O segundo script tenta usar uma string (`"dois"`) como chave. `WeakMap` exige que as chaves sejam objetos, e strings são valores primitivos. Tentar usar um valor primitivo como chave em um `WeakMap` resulta em um `TypeError`.
(E) Incorreta: Embora o primeiro script realmente retorne um objeto vazio, o segundo script não retorna a string "dois". A armadilha aqui é confundir `WeakMap` com `Map` (um `Map` comum aceitaria strings como chaves). `WeakMap` exige que as chaves sejam objetos, e tentar usar um valor primitivo como chave (como a string "dois") causa um `TypeError`, não permitindo que o valor seja armazenado ou recuperado.

Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho