all-of-frontend/Answer/1 ~ 10/1.md

30 lines
884 B
Markdown
Raw Permalink Normal View History

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