Вопрос проверяет понимание TDZ (temporal dead zone) и отличий let/const от var.
Короткий ответ
let и const поднимаются (hoisting есть), но не инициализируются сразу. До строки объявления переменная находится в TDZ, и любое обращение к ней приводит к ReferenceError. Это сделано намеренно, чтобы избежать скрытых багов, когда код читает переменную до ее логического объявления. В отличие от var, где до объявления возвращается undefined, let/const сразу сигнализируют об ошибке.
Длинный ответ
Зарегистрироваться
Развернутый ответ доступен только зарегистрированным пользователям.