【发布时间】:2020-06-08 02:23:33
【问题描述】:
下面的代码应该工作吗?
if(true) {
async function bar() {
console.log("hello");
}
}
bar();
Chrome 80 和 Firefox 72 都抛出 ReferenceError 说 bar 未定义。所以看起来async function bar() {...} 声明是块作用域,而function bar() {...} 声明是函数作用域?如果是这种情况令人困惑,但有人可以通过规范相关部分的链接为我确认吗?
另外,有没有办法在块内声明 async function 声明函数范围?
【问题讨论】:
-
我相信它的行为类似于
let和const -
嗯。它在 node.js 中的行为相同
-
我想如果你想突破块范围,你可以这样做:
var bar = async function () {} -
范围内似乎没有任何关于此的内容,@MysterX 可能是对的。
标签: javascript scope async-await