В своей области видимости var до присваивания имеет значение undefined. Доступ к let до инициализации вызывает ReferenceError из-за temporal dead zone.
Что произойдёт при обращении к переменной до её объявления в случаях var и let? В чём различие?
В своей области видимости var до присваивания имеет значение undefined. Доступ к let до инициализации вызывает ReferenceError из-за temporal dead zone.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Что произойдёт при обращении к переменной до её объявления в случаях var и let? В чём различие?
Ответ
В своей области видимости var до присваивания имеет значение undefined. Доступ к let до инициализации вызывает ReferenceError из-за temporal dead zone.
Например, console.log(a); var a = 1; выводит undefined, а console.log(b); let b = 1; завершается ошибкой. Let имеет блочную область, var — область функции или соответствующего верхнего окружения. Даже typeof не позволяет безопасно прочитать let внутри его temporal dead zone.