请记住,
await
关键字仅在async
函数内部有效。如果在async
函数的主体外部使用它,则会得到SyntaxError
。
但这不是真的。
在DevTools控制台中尝试此代码,没有错误,仅显示结果:
async function a(val) { return val; }
await a(10) // await is not inside async function
10
代码或文档有什么问题?
答案 0 :(得分:9)
MDN文档是正确的,它解释了它在JavaScript中的工作方式。
这只是DevTools添加的一项功能,可让您更轻松地测试异步/等待代码。它不是JavaScript功能。
自2017年11月8日以来,似乎已在DevTools中提供支持:
https://chromium.googlesource.com/chromium/src.git/+/e8111c396fef38da6654093433b4be93bed01dce
如果您监视
在129行,它们具有评估标记为异步的表达式的功能:
async evaluateCommandInConsole
答案 1 :(得分:8)
没事。
您找到了special feature of the DevTools console!在to make it as easy as possible中可以在实时环境中试用async
-await
代码。您可以想象,您在控制台中输入的任何代码都会自动包装在async
函数中。实际上,正如另一个答案所指出的,这正是发生的情况。
重要的是要注意,即使这可以在控制台中使用,但它不是JavaScript的功能。
因此,您的所有观察结果都是正确和预期的! MDN文档是准确的,因为如果您尝试在await
函数外部使用async
的页面上加载脚本,则会出错。另一方面,DevTools控制台旨在完成这项工作(专门针对开发人员的人机工程学),因此您的代码可以在控制台中运行而不会出现任何错误。
这不是唯一的trick the DevTools console has up its sleeve。通常,如果您真的要测试某些代码在页面上的运行方式,那么最好在页面上而不是在控制台上实际运行脚本。