Поднятие переменных, объявленных с помощью 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