You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

在不支持async/await的浏览器中使用该语法的影响及相关问题

在不支持async/await的浏览器中使用该语法的影响

嘿,这个问题问得特别实际!我来给你掰扯清楚细节:

1. 会抛出语法错误,而非直接忽略

不支持async/await的浏览器(比如IE11及更早版本,还有一些老旧的移动端浏览器)的JS引擎根本不认识async关键字和await表达式这种ES2017新增的语法结构。当它们解析到这类代码时,会立即抛出语法错误,绝对不会跳过或忽略这段代码。你会在浏览器控制台看到类似「Unexpected reserved word 'async'」的错误提示。

2. 影响范围仅限包含错误语法的脚本块

这种语法错误属于解析阶段错误,只会导致当前脚本块的执行完全终止——也就是说,这个<script>标签(或者外部JS文件)里,从错误代码位置开始往后的所有代码都不会被执行。但其他独立的脚本块(比如页面里其他的<script>标签)不会被波及,只要它们自身没有语法错误,就会正常加载和执行。

举个直观的例子:

<script>
// 这个脚本块包含不支持的语法,会触发报错
async function fetchData() {
  const res = await fetch('/api');
}
// 这行代码永远不会执行
console.log('我在错误代码后面,跑不起来');
</script>

<script>
// 这个独立的脚本块不受影响,会正常执行
console.log('我是另一个脚本块,能正常跑起来');
</script>

简单总结:旧浏览器遇到async/await会直接“炸掉”当前脚本块,但不会连累其他脚本,而且是明确报错,不是默默忽略。

内容的提问来源于stack exchange,提问作者drmrbrewer

火山引擎 最新活动