No contexto do JavaScript, considere as seguintes afirmativa...
I. Variáveis declaradas com let não podem ser redeclaradas no mesmo { } bloco.
II. Variáveis declaradas com let podem ser utilizadas em qualquer trecho do código (escopo global).
III. Variáveis declaradas com var no interior de um { } bloco podem ser utilizadas fora do bloco de origem.
Está correto o que se afirma apenas em
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Gabarito: Letra D.
A alternativa correta é a letra D, que diz que as afirmativas I e III estão corretas. Vamos entender o porquê:
Afirmativa I: Afirmar que variáveis declaradas com let não podem ser redeclaradas no mesmo bloco é correto. Isso se deve ao fato de que let possui escopo de bloco, o que significa que, se você tentar declarar uma variável com o mesmo nome dentro do mesmo bloco, ocorrerá um erro. Isso é uma das diferenças entre let e var, já que var permite a redeclaração da variável no mesmo escopo.
Afirmativa II: Esta afirmação é incorreta. Variáveis declaradas com let não podem ser utilizadas em qualquer trecho do código (escopo global) se elas foram declaradas dentro de um bloco específico. Elas estão restritas ao bloco em que foram declaradas e não podem ser acessadas fora dele.
Afirmativa III: Esta afirmação é correta e trata de um comportamento conhecido como "hoisting" em JavaScript. Quando uma variável é declarada com var, ela é içada para o topo do seu escopo de função ou, se declarada fora de uma função, para o topo do escopo global. Isso significa que, mesmo dentro de um bloco, se você declarar uma variável com var, ela poderá ser acessada fora desse bloco, o que não é o caso com let.
Conhecendo esses conceitos de escopo e declaração de variáveis em JavaScript, ficamos com a letra D como a alternativa correta, confirmando que as afirmativas I e III são verdadeiras.
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
GAB D
I - "let" e "const" não podem ser redeclarados porque são de escopo local. "var" pode ser redeclarado porque é de escopo global. Isso acontece para evitar problemas na hora do hoisting, porque a galera tem mania de usar "var" em tudo
II - "let" e "const" são de escopo local
III - "var" é de escopo global, ela vai ser hoisted para o topo do seu escopo e poderá ser utilizada em qualquer lugar
III. Só let e const podem ter escopo de bloco.
Fonte: https://www.w3schools.com/js/js_scope.asp
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo