Объявление функции имеет ограниченную область - PullRequest
1 голос
/ 02 мая 2020

Говорят, что объявления функций ограничены блоками , но код ниже вызывает путаницу в моем уме. Пожалуйста, если кто-нибудь знает какую-то статью, которая отражает истинное поведение объявления функции.

{ // Enter a new scope

  console.log(foo()); // prints hello
  function foo() {
    return 'hello';
  }

}
foo(); // {A} // prints "hello"

Если функции были бы ограничены областью блока, то почему в строке {A} должно быть напечатано "hello" в консоли.

1 Ответ

0 голосов
/ 02 мая 2020

Проблема с кодом выше в том, что он работал в небрежном режиме, поэтому все прошло хорошо. Но в строгом режиме строка A вернет ошибку. Следовательно, функции имеют вид блока.

'use strict';
{ // Enter a new scope

  console.log(foo()); // prints hello
  function foo() {
    return 'hello';
  }

}
foo(); // {A} // throws error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...