Говорят, что объявления функций ограничены блоками , но код ниже вызывает путаницу в моем уме. Пожалуйста, если кто-нибудь знает какую-то статью, которая отражает истинное поведение объявления функции.
{ // Enter a new scope
console.log(foo()); // prints hello
function foo() {
return 'hello';
}
}
foo(); // {A} // prints "hello"
Если функции были бы ограничены областью блока, то почему в строке {A} должно быть напечатано "hello" в консоли.