You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何同一段JavaScript代码在Chrome控制台和JSFiddle运行结果不一致?

运行结果差异原因说明

现有代码如下:

const thenable = {
  then: function(callback) {
    setTimeout(() => callback(2), 100);
  }
};

const value = await thenable;
console.log(value);// 控制台输出2,JSFIDDLE中报错

出现运行差异的核心原因是两个环境对顶层await特性的支持度不同:

  • Chrome开发者工具控制台默认支持顶层await特性:该特性在ES2022被正式纳入ECMAScript标准,允许在模块的顶层作用域直接使用await关键字,无需嵌套在async函数内部。Chrome为了优化调试体验,默认开启了该特性支持,所以代码执行合法,await正常解析thenable对象后拿到返回值2,控制台正常输出。
  • JSFiddle运行环境默认未开启顶层await支持:JSFiddle的默认JS执行环境遵循旧版语法规则,要求await必须写在async函数内部才能被识别为合法语法,顶层直接使用await不符合语法要求,因此直接抛出SyntaxError错误。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:15:08