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

Немедленно вызываемая функция

Вопрос

Что выведет код? По строке на каждый вывод.

var v = 'внешняя';
(function () {
  console.log(v);
  var v = 'внутренняя';
  console.log(v);
})();
console.log(v);

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

Напишите, что выведет код: каждый вывод с новой строки.

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

Коротко

Код выведет: undefined, внутренняя, внешняя. Почему так Внутренняя var затеняет внешнюю переменную на всю функцию, включая строки до объявления - там она уже undefined.

Что выведет

undefined
внутренняя
внешняя

Разбор

Почему так

Внутренняя var затеняет внешнюю переменную на всю функцию, включая строки до объявления - там она уже undefined. С let вместо var это была бы ошибка TDZ.

Вывод

undefined
внутренняя
внешняя

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

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