ジョー:
次のコードは、仕事はする必要がありますか?
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*
任意の下位互換性を必要としない宣言。