Подъем 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" ); }
}

а затем вызвать функцию я получу результат "а"?

0 ответов

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