`function`宣言は、関数がスコープされますが、`非同期function`宣言はブロックスコープされていますか?

ジョー:

次のコードは、仕事はする必要がありますか?

if(true) {
  async function bar() {
    console.log("hello");
  }
}
bar();

クローム80とFirefox 72は、両方のスローReferenceErrorことわざがbar定義されていません。以下のように思えるので、async function bar() {...}宣言が、一方、スコープブロックされているfunction bar() {...}宣言関数は、スコープされていますか?それが事実だが、缶誰かがちょうど仕様の関連部分へのリンクをその私のために確認した場合に混乱?

また、作成する方法がありasync function宣言機能スコープのブロック内から宣言したときは?

ベルク:

ように思えるasync function bar() {...}宣言がブロックされているスコープ

はい、普通のが好きです。関数宣言はブロックスコープ一般的です。

...一方、function bar() {...}宣言関数は、スコープされていますか?

そうでもない、レガシーの理由でずさんなモード以外でこれは影響しませんasync functionし、function*任意の下位互換性を必要としない宣言。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=7520&siteId=1