Analise o seguinte trecho de código em JavaScript executado ...
let a = 10; var b = 15; if (true) { let a = 11; var b = 17; } console.log(a+b);
Qual será o valor exibido por console.log(a+b) após a execução do código?
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: C
Fundamento decisivo: A decisão dependia do escopo em JavaScript: o let do bloco if não altera o a externo, e o var declarado no bloco permanece visível fora dele. Assim, após o bloco, os valores usados são a = 10 e b = 17, o que leva ao resultado 27.
- Ao ver declaração dentro de bloco, confirme primeiro se a variável foi criada com let ou com var antes de calcular o valor fora dele.
- Se houver let com mesmo nome em bloco interno, trate-o como sombreamento temporário da variável externa, não como alteração definitiva.
- Se houver var dentro de bloco no contexto mostrado, verifique seu efeito na variável acessada depois do bloco, porque ele não fica restrito ao if.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
let só vale dentro do bloco { }, então o a = 11 não altera o a = 10 de fora.
var vale fora do bloco, então o b = 17 substitui o b = 15.
Resultado: 10 + 17 = 27.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo