diff --git a/Answer/1 ~ 10/1.md b/Answer/1 ~ 10/1.md new file mode 100644 index 0000000..7b774b2 --- /dev/null +++ b/Answer/1 ~ 10/1.md @@ -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` 了。