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:
ATypeError e TypeError;
BTypeError e a string “dois”;
CSyntaxError e a string “dois”;
Dum objeto vazio e TypeError;
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.
1Chave é objeto?
2set() e get() funcionam
3Chave é primitivo?
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.