Considere o seguinte código em ECMAScript 2021: const num = 1_2_3_4_5+1_0; console.log(num) Ao ser executado, o código acima exibe o seguinte texto no console:
- A)NaN;
Errada, porque a expressão é numérica e a soma entre os literais resulta em um número válido, não em `NaN`.
- B)12355;
Certa, porque `1_2_3_4_5` vale `12345` e `1_0` vale `10`, então o resultado é `12355`.
- C)undefined;
Errada, porque `undefined` seria típico de variável não atribuída ou retorno ausente, o que não acontece aqui.
- D)1_2_3_4_6_0;
Errada, porque os sublinhados não aparecem no valor final: eles só separam dígitos no literal numérico.
- E)1_2_3_4_5+1_0.
Errada, porque o `+` é operador de soma, não parte do texto exibido, e os literais não são impressos com seus separadores.
Gabarito: B
No ECMAScript 2021, o caractere de sublinhado em literais numéricos serve apenas como separador visual. Ele ajuda a leitura do número, mas não vira parte do valor, nem faz concatenação de texto. Assim, `1_2_3_4_5` é lido como `12345` e `1_0` é lido como `10`. Então a expressão `const num = 1_2_3_4_5 + 1_0;` faz uma soma normal entre dois números. Não há string, não há `undefined` e muito menos `NaN`. O JavaScript só está sendo simpático com sua leitura, mas na hora de calcular ele tira os “enfeites” e soma tudo direitinho. Fazendo a conta: `12345 + 10 = 12355`. Por isso, ao executar `console.log(num)`, o console exibe `12355`. Em resumo, a banca explorou uma regra de sintaxe do padrão ECMAScript: separadores numéricos com `_` são permitidos em literais desde versões recentes da linguagem, mas não alteram o valor numérico.