Объявление функции внутри условного

В книге, которую вы не знаете, JS: Область применения и замыкания. Вот пример кода, который я не совсем понимаю.

"Объявления функций, которые появляются внутри обычных блоков, как правило, поднимаются в объем, а не являются условными, как предполагает этот код:"

foo(); // "b"

var a = true;
if (a) {
   function foo() { console.log( "a" ); }
}
else {
   function foo() { console.log( "b" ); }
}

Что это значит? Как это вообще возможно? Условное не работает?

1 ответ

Это происходит потому, что объявления функций перемещаются в верхнюю часть файла анализатором javascript. Вот что они имеют в виду под подъемом. Последняя декларация foo перезаписывает первое, когда они подняты.

Другие вопросы по тегам