Как работает подъем для FunctionDeclaration - PullRequest
0 голосов
/ 06 мая 2018

У меня есть этот код с объявлением функции и оператором дополнительного блока, который создает новую лексическую среду:

console.log("1:"+foo);
{
  console.log("2:"+foo);
  function foo(){ console.log("checked"); }
  console.log("3:"+foo);
}
console.log("4:"+foo);

Почему сначала выводится лог undefined? Да, функция поднята. Но неясно, почему внутри оператора блока мы получаем эту функцию до объявления и после объявления, но за пределами блока до объявления мы получаем неопределенное значение. Я хотел бы получить объяснение с точки зрения спецификации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...