Вопрос проверяет понимание временной мёртвой зоны и различий между var, let и const.
При обращении к переменной, объявленной через let или const, до её объявления произойдёт ошибка ReferenceError. Переменная существует, но недоступна до момента инициализации. Это поведение защищает код от неявных ошибок. Такое ограничение делает код более предсказуемым.
Переменные, объявленные через let и const, тоже поднимаются, но работают иначе, чем var. Они попадают во временную мёртвую зону (Temporal Dead Zone).
Temporal Dead Zone — это период от начала области видимости до строки с объявлением переменной, в течение которого:
переменная существует
доступ к ней запрещён
Пример:
console.log(a); // ReferenceError
let a = 10;
Исключается неявное использование неинициализированных переменных
Повышается безопасность и читаемость кода
Ошибки обнаруживаются раньше, а не маскируются undefined
let и constlet — значение можно менять
const — повторное присваивание запрещено
Оба подчиняются правилам TDZ.
let и const намеренно запрещают доступ к переменной до объявления. Это одно из ключевых улучшений современного JavaScript по сравнению с var.