devterview_$ iniciar simulação

Hoisting: var, let e a temporal dead zone

FácilJúniorFundamentos da linguagem

Pergunta

O que é hoisting em JavaScript, e como `var`, `let`/`const` e declarações de função se comportam diferente?

Resposta esperada

Hoisting é o fato de que declarações são processadas antes da execução do bloco. `var` é içada e inicializada com `undefined` — acessar antes da linha da declaração dá `undefined`, não erro. `let` e `const` também são içadas, mas ficam numa 'temporal dead zone' até a linha da declaração: acessar antes lança `ReferenceError`. Declarações de função (`function f(){}`) são içadas inteiras, então dá pra chamar antes; já `const f = () => {}` segue a regra de `const` (TDZ). Por isso `let`/`const` são preferidos: transformam um bug silencioso (`undefined`) num erro explícito.

Por que perguntam isso

Pergunta de aquecimento pra JS. Resposta forte usa o termo TDZ e explica por que `let` é 'mais seguro' — vira erro em vez de `undefined`.

#hoisting#tdz#escopo
publicidade

Perguntas de acompanhamento

Relacionadas