Что выведет console.log при объявлении переменной через var и const

Первый блок выведет undefined, затем 10. Во втором блоке первое обращение к i выбросит ReferenceError из-за временной мёртвой зоны; последний console.log не выполнится.

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

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

Первый блок выведет undefined, затем 10. Во втором блоке первое обращение к i выбросит ReferenceError из-за временной мёртвой зоны; последний console.log не выполнится.

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

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

Условие

Определите, какие значения будут напечатаны в консоль в каждом из приведённых примеров.

 {
    console.log(i) // ??
    var i = 10
    console.log(i) // ??
}

{
    console.log(i) // ??
    const i = 10
    console.log(i) // ??
}

Ответ

Первый блок выведет undefined, затем 10. Во втором блоке первое обращение к i выбросит ReferenceError из-за временной мёртвой зоны; последний console.log не выполнится.

Объявление var поднимается в область функции или script и до присваивания имеет значение undefined. const создаёт отдельное блочное связывание, которое затеняет внешнее i с начала блока, но остаётся неинициализированным до объявления. Поэтому второй блок не прочитает 10 из первого. Ошибка возникает именно при чтении до инициализации, а не из-за повторного имени в соседнем блоке.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее