← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

No contexto do JavaScript, considere as seguintes afirmativas sobre a declaração de variáveis com let ou var. 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: D

Em JavaScript, a diferença entre let e var costuma cair justamente no jogo de escopo e redeclaração. A let tem escopo de bloco, então o que nasce dentro de um { } fica preso ali, e além disso não pode ser redeclarada no mesmo bloco. Já a var tem escopo de função, não de bloco, o que faz muita gente escorregar na prova. Na afirmativa I, a banca está certa: se você declara uma variável com let no mesmo bloco, não pode sair repetindo o nome como se nada tivesse acontecido. O JavaScript entende isso como erro de redeclaração naquele escopo. Na afirmativa II, a frase está errada porque let não vale em qualquer trecho do código. Ela não cria escopo global livre para uso em todo lugar; ela respeita o bloco em que foi declarada. Se a intenção fosse dizer que uma variável let declarada fora de blocos pode ser acessada globalmente, ainda assim a ideia estaria mal formulada, porque o ponto central é que let não ignora escopo. Na afirmativa III, a banca está certa: var dentro de um bloco não fica limitada a esse bloco, pois o seu escopo não é de bloco, e sim de função. Por isso ela pode ser acessada fora do { } em que apareceu. Em prova, pense assim: let prende no bloco; var escapa do bloco.

Continue treinando

Questões relacionadas