mirror of
https://github.com/KieSun/all-of-frontend.git
synced 2024-11-22 23:08:14 +08:00
feat: update answer
This commit is contained in:
parent
cf7a2f6d4f
commit
38d32e22fa
29
Answer/1 ~ 10/1.md
Normal file
29
Answer/1 ~ 10/1.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
```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` 了。
|
Loading…
Reference in New Issue
Block a user