Недавно меня спросили, к чему приведет следующий код JavaScript, и правильный ответ смущает меня:
(function () {
var a = b = 5;
})();
console.log(b);
Я бы подумал, что это напечатало бы undefined
, но на самом деле печатает 5
.
Насколько я понимаю, все переменные, определенные внутри IIFE (выражение немедленно вызванной функции), должны не быть видимыми за пределами его области видимости.Как именно порядок этих объявлений переменных делает b
видимым за пределами его области действия, в то время как a
не виден за пределами его области видимости?