Pular para o conteúdo principal

Questão de Programação — JavaScript — FGV 2024

ProgramaçãoJavaScript
Código
fg077408
Banca
FGV
Órgão
CVM
Ano
2024
Nível
Superior
Cargo
Analista - Perfil 8 - TI / Sistemas e Desenvolvimento - Tarde
A analista Camila executou o seguinte script em 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: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:
  1. ATypeError e TypeError;
  2. BTypeError e a string “dois”;
  3. CSyntaxError e a string “dois”;
  4. Dum objeto vazio e TypeError;
  5. Eum objeto vazio e a string “dois”.
Revelar gabarito e comentário

GabaritoD — um objeto vazio e TypeError;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

WeakMap em JavaScript

Gabarito: letra D. No primeiro script, e1 é um objeto vazio, e WeakMap aceita objetos como chave, então map1.set(e1, e1) é válido e map1.get(e1) retorna o próprio objeto, imprimindo {}. No segundo script, e2 é uma string ("dois"), um valor primitivo; WeakMap exige que as chaves sejam objetos, logo map2.set(e2, e2) lança um TypeError, interrompendo a execução antes do console.log. Portanto, a saída é: {} (objeto vazio) e TypeError.

NÃO CAIA NESSA!

A banca explora a restrição de que as chaves de WeakMap devem ser objetos. O candidato pode achar que o segundo script também imprime a string, mas na verdade ocorre um erro. Lembre-se: WeakMap só aceita objetos como chave; primitivos (string, number, boolean, null, undefined, symbol) causam TypeError.

  1. 1Chave é objeto?
  2. 2set() e get() funcionam
  3. 3Chave é primitivo?
  4. 4set() lança TypeError
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma que ambos geram TypeError. O primeiro script é válido, não lança erro.

Alternativa B — ❌ Incorreta

Afirma que o primeiro gera TypeError e o segundo imprime a string. O primeiro é válido, e o segundo lança erro antes do console.log.

Alternativa C — ❌ Incorreta

Troca TypeError por SyntaxError. O erro é em tempo de execução (TypeError), não de sintaxe.

Alternativa D — ✅ Correta ⟵ GABARITO

Primeiro script imprime {} (objeto vazio), segundo lança TypeError. Exato.

Alternativa E — ❌ Incorreta

Afirma que o segundo script imprime a string. Na verdade, ocorre TypeError antes.

Gabarito: letra D.

Link permanente: /questoes/fg077408