← Questões de Programação

Programação · FGV · 2022

Questão comentada de Programação

No contexto do JavaScript, analise as afirmativas a seguir a respeito do comportamento do JS de mover declarações para o top (em inglês, Hoisting). I. Variáveis declaradas por meio de var podem ser utilizadas antes de declaradas. II. Variáveis declaradas com let e const são movidas para o topo do bloco somente quando inicializadas na declaração. III. Usar uma constante (const) antes de declarada gera um erro de sintaxe. Está correto o que se afirma em:

Gabarito: A

No JavaScript, "hoisting" é aquele truque do motor da linguagem que faz declarações parecerem ter ido para o topo do escopo. Mas atenção: isso não significa que toda variável já pode ser usada de boa antes de aparecer no código. Com var, a declaração é hoisted e a variável existe desde o início do escopo, ainda que com valor undefined. Por isso, a afirmativa I está correta. Já let e const também são hoisted, mas entram na chamada temporal dead zone até a linha da declaração ser executada. Em outras palavras, elas ficam "reservadas", porém inacessíveis antes da inicialização. Então a afirmativa II está errada, porque não é só quando inicializadas que são levadas ao topo; o que muda é o acesso, não o hoisting. A afirmativa III também está errada porque usar const antes de declarar não gera erro de sintaxe. O erro ocorre em tempo de execução, normalmente um ReferenceError, já que a variável ainda está na temporal dead zone. Em concurso, vale guardar a diferença: var permite acesso antes da linha, let/const não permitem, mas continuam sendo hoisted. Assim, o gabarito A está correto porque somente a afirmativa I descreve adequadamente o comportamento do JavaScript.

Continue treinando

Questões relacionadas