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.
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