Объявление функции внутри условного
В книге, которую вы не знаете, JS: Область применения и замыкания. Вот пример кода, который я не совсем понимаю.
"Объявления функций, которые появляются внутри обычных блоков, как правило, поднимаются в объем, а не являются условными, как предполагает этот код:"
foo(); // "b"
var a = true;
if (a) {
function foo() { console.log( "a" ); }
}
else {
function foo() { console.log( "b" ); }
}
Что это значит? Как это вообще возможно? Условное не работает?
1 ответ
Это происходит потому, что объявления функций перемещаются в верхнюю часть файла анализатором javascript. Вот что они имеют в виду под подъемом. Последняя декларация foo
перезаписывает первое, когда они подняты.