Questão nº 43
Questão de Tecnologia da Informação · FGV MPGO Servidores 2022 (nº 43)
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
- AI.
- BII.
- CI e II.
- DI e III. (alternativa correta)
- EII e III.
Resposta comentada
Gabarito Alternativa D
Conceito-chave: let e var são palavras-chave para declarar variáveis, mas diferem em escopo (onde a variável existe) e redeclaração. let respeita o bloco { } (escopo de bloco) e não permite redeclarar a mesma variável no mesmo bloco; var ignora o bloco (exceto funções) e permite redeclaração.
- (A) Incorreta: A afirmativa I é verdadeira, mas a II é falsa (variáveis
lettêm escopo de bloco, não global), então a alternativa que só cita I está incompleta. - (B) Incorreta: A afirmativa II é falsa:
letnão é global, só existe dentro do bloco onde foi declarada. - (C) Incorreta: A afirmativa II é falsa, então a combinação I e II não pode ser correta.
- (D) Correta: I é verdadeira (
letnão pode ser redeclarada no mesmo bloco) e III é verdadeira (varvaza do bloco{ }para fora, pois só respeita escopo de função). Esta é a resposta do gabarito oficial. - (E) Incorreta: A afirmativa II é falsa, então a combinação II e III não pode ser correta.
Armadilha do distrator mais tentador (C): A banca junta a afirmativa I (verdadeira) com a II (falsa) para pegar quem confunde let com var. Muita gente acha que let é "global" porque pode ser usada fora de funções, mas isso só vale se for declarada no escopo raiz (fora de qualquer bloco). A pegadinha é que a afirmativa II diz "qualquer trecho do código", o que é falso: se você declarar let dentro de um if ou for, ela não existe fora daquele bloco. Já a III é verdadeira justamente porque var ignora o bloco { } — essa é a diferença clássica que a banca quer testar.
Fonte: FGV MPGO Servidores 2022 Analista em Informática (Caderno Tipo 1). Reproduzida para fins de estudo.