mirror of
https://github.com/KieSun/all-of-frontend.git
synced 2024-11-11 09:28:14 +08:00
884 B
884 B
try {
(async function() { a().b().c() })()
} catch (e) {
console.log(`执行出错:${e.message}`)
}
这道题目主要三个考点:
- 执行一个没有定义的函数会发生什么
- 在
async
内部发生报错会发生什么 try catch
只能捕获同步代码的异常
因此答案就明了了。
因为我们执行了一个未定义的函数,所以会报错 a is not defind
,又因为是在 async
中,所以报错信息会显示 in promise
。最后 try cathch
只能捕获同步代码的抛错,因为是 async
,所以走不到 catch
里面。
如果我们把代码这样改一下就可以了:
try {
await (async function() { a().b().c() })()
} catch (e) {
console.log(`执行出错:${e.message}`)
}
另外说个小知识点,最新的 Chrome 已经支持在全局作用域下使用 await
了。