Что произойдёт при обращении к переменной до её объявления в случаях var и let? В чём различие?

В своей области видимости var до присваивания имеет значение undefined. Доступ к let до инициализации вызывает ReferenceError из-за temporal dead zone.

Короткий ответ

Что ответить на собеседовании

В своей области видимости 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее