Я изучаю подъем javascript из книги Scope & Closures, первой из серии книг You Don't Know Js. Я понимаю, как работает подъем, но когда дело доходит до этого примера, он ведет себя по-другому.
foo(); // "b"
var a = true;
if (a) {
function foo() { console.log( "a" ); }
}
else {
function foo() { console.log( "b" ); }
}
В книге упоминается, что вывод должен быть «b» из-за подъема и переопределения функций, но результатом в моем браузере является эта ошибка.
Uncaught TypeError: foo is not a function
at <anonymous>:1:1
Так что же в этом случае произошло, чтобы выкинуть TypeError?
foo(); function foo() { console.log("works!"); }
. - person ASDFGerte   schedule 01.08.2018