"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como `let` e `const` diferem de `var` no JavaScript Hoisting?

Como `let` e `const` diferem de `var` no JavaScript Hoisting?

Publicado em 2024-12-21
Navegar:747

How Do `let` and `const` Differ from `var` in JavaScript Hoisting?

Elevação de variáveis ​​declaradas com let ou const

Enquanto as variáveis ​​declaradas com var se comportam conforme esperado durante o içamento, aquelas declaradas com let ou const exibem comportamento diferente.

Elevação de todas as declarações

Todas as declarações JavaScript (var, let, const, função, função*, classe) sofrem elevação, o que significa que são reconhecíveis em qualquer lugar dentro de seu respectivo escopo.

Diferença de inicialização

No entanto, a distinção entre var/ As declarações function/function* e let/const/class residem em sua inicialização. As declarações Var são inicializadas com undefined desde o momento da criação da ligação no início do escopo. Em contraste, as declarações let/const/class permanecem não inicializadas até que sua instrução seja avaliada.

Zona morta temporal para variáveis ​​não inicializadas

Este estado não inicializado cria uma "zona morta temporal "onde acessar a variável antes da inicialização resulta em um ReferenceError.

Exemplo:

x = y = "global";
(function() {
    x; // undefined
    y; // Reference error: y is not defined

    var x = "local";
    let y = "local";
}());

let vs. const no içamento

Let e ​​const operam de forma idêntica em termos de içamento. A diferença entre elas é que sempre deve ser atribuído um valor a uma constante no momento da declaração.

Conclusão

As variáveis ​​declaradas com let ou const são içadas, mas permanecem não inicializadas dentro uma zona morta temporal até que sua declaração seja processada. Acessá-los prematuramente resultará em um ReferenceError.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3