Выбор ответа Middle Области видимости и замыкания обновлено

typeof в временной мёртвой зоне

Вопрос

Что произойдёт при выполнении кода?

function check() {
  console.log(typeof value);
  let value = 1;
}
check();

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Бросит ReferenceError. value объявлена через let в этой функции, поэтому до строки объявления она в TDZ.

Варианты ответа

  1. Выведет 'undefined'
  2. Выведет 'number'
  3. Ничего не выведет, функция завершится молча
  4. Бросит ReferenceErrorправильный ответ

Разбор

value объявлена через let в этой функции, поэтому до строки объявления она в TDZ. Любое обращение к ней, включая typeof, бросает ReferenceError. typeof безопасен только для необъявленных переменных: для них он вернёт 'undefined'. 'number' предполагает, что инициализация поднимается, а поднимается только объявление. Молчаливого завершения не бывает: ошибка всплывёт наружу.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.