Расскажи про hoisting (поднятие переменных). Что произойдёт при обращении к переменной до её объявления через var и через let?

Это значит, что до строки с объявлением переменной попытка к ней обратиться приведёт к ошибке ReferenceError.

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

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

Переменные, объявленные через let и const, технически подвергаются hoisting, то есть их объявление поднимается в начало блока, но при этом они находятся в так называемой "временной мёртвой зоне" (Temporal Dead Zone, TDZ). Это значит, что до строки с объявлением переменной попытка к ней обратиться приведёт к ошибке ReferenceError.

Подробный разбор

Ответ с пояснениями

Переменные, объявленные через let и const, технически подвергаются hoisting, то есть их объявление поднимается в начало блока, но при этом они находятся в так называемой "временной мёртвой зоне" (Temporal Dead Zone, TDZ). Это значит, что до строки с объявлением переменной попытка к ней обратиться приведёт к ошибке ReferenceError.

Пример:

console.log(a); // ReferenceError: Cannot access 'a' before initialization
let a = 10;

console.log(b); // ReferenceError: Cannot access 'b' before initialization
const b = 20;

Таким образом, let и const не доступны до их явного объявления в коде, в отличие от var, который инициализируется значением undefined при hoisting и не вызывает ошибку при обращении до объявления.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку