Выбор ответа Middle Области видимости и замыкания обновлено
typeof в временной мёртвой зоне
Вопрос
Что произойдёт при выполнении кода?
function check() {
console.log(typeof value);
let value = 1;
}
check();
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Бросит ReferenceError. value объявлена через let в этой функции, поэтому до строки объявления она в TDZ.
Варианты ответа
- Выведет
'undefined' - Выведет
'number' - Ничего не выведет, функция завершится молча
- Бросит ReferenceErrorправильный ответ
Разбор
value объявлена через let в этой функции, поэтому до строки объявления она в TDZ. Любое обращение к ней, включая typeof, бросает ReferenceError. typeof безопасен только для необъявленных переменных: для них он вернёт 'undefined'. 'number' предполагает, что инициализация поднимается, а поднимается только объявление. Молчаливого завершения не бывает: ошибка всплывёт наружу.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.