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