«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Чем `let` и `const` отличаются от `var` в JavaScript Hoisting?

Чем `let` и `const` отличаются от `var` в JavaScript Hoisting?

Опубликовано 21 декабря 2024 г.
Просматривать:339

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

Поднятие переменных, объявленных с помощью let или const

Хотя переменные, объявленные с помощью var, во время подъема ведут себя так, как ожидалось, переменные, объявленные с помощью let или const, демонстрируют другое поведение.

Поднятие всего Объявления

Все объявления JavaScript (var, let, const, function, function*, class) подвергаются подъему, что означает, что они распознаются в любом месте в пределах соответствующей области действия.

Разница в инициализации

Однако различие между объявлениями var/function/function* и let/const/class заключается в их инициализация. Объявления Var инициализируются значением undef с момента создания привязки в начале области видимости. Напротив, объявления let/const/class остаются неинициализированными до тех пор, пока их оператор не будет оценен.

Временная мертвая зона для неинициализированных переменных

Это неинициализированное состояние создает «временную мертвую зону "где доступ к переменной до инициализации приводит к ReferenceError.

Пример:

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

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

let против const в подъеме

Let и const работают одинаково с точки зрения подъема. Разница между ними в том, что константе всегда должно быть присвоено значение при объявлении.

Заключение

Переменные, объявленные с помощью let или const, поднимаются, но остаются неинициализированными внутри временная мертвая зона до тех пор, пока не будет обработано их заявление о декларации. Преждевременный доступ к ним приведет к ошибке ReferenceError.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3