尽管选择了“ES6 / Babel”选项,但在 JSBin 中没有启用 ES6

gho*_*der 0 javascript jsbin

我在 JSBin 中将下拉列表更改为“ES6 / Babel”,但它仍然显示 ES6 功能的错误。在 JSBin 中启用 ES6 时是否需要做一些额外的更改?

JavaScript 面板和控制台面板打开的 JSBin 片段的屏幕截图。 JavaScript 面板中的代码使用 ES6 关键字 const 和箭头函数,以及 ES8 关键字 async。 这些下划线带有黄色波浪下划线。 代码的其他随机部分用红色波浪下划线加下划线,表示错误,尽管代码有效。 JavaScript 选项“ES6 / Babel”被选中。 控制台面板显示“语法错误:意外标记 ';'”。

Seb*_*mon 5

如果您将鼠标悬停在黄色下划线上,您会看到一个工具提示,内容如下

?? 'const' 在 ES6(使用 esnext 选项)或 Mozilla JS 扩展(使用 moz)中可用。

不幸的是,出于某种原因,JSBin 并没有决定将 ESNext 设为默认值,自动建议将其设为默认值,甚至没有暗示在哪里可以找到任何提到的选项。

但幸运的是,有谷歌

有一个关闭的错误报告,有一些讨论,建议您可以添加其中一行

// jshint esnext: true
Run Code Online (Sandbox Code Playgroud)

或者

/* jshint esnext: true */
Run Code Online (Sandbox Code Playgroud)

在你的 JS 的顶部。

貌似在“账户设置”里面也有注册用户的账户设置?“喜好” ?“linting” ? “jshint”,可以添加这样的规则:

{
  "esnext": true
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,async仍然无法工作,因为JSHint本身抱怨“'async functions' 仅在 ES8 中可用(使用 'esversion: 8')”

需要注意的是通过选择选项卡“ES6 /巴别塔”,你告诉JSBin到transpile ES6代码下降到一个较低的版本(可能ES5.1)。如果你的代码有“错误”,即使用的语法不是 ES6 中的,而是更高版本的,那么它就不能转译。只需选择“JavaScript”而不是“ES6 / Babel”即可直接运行JS代码。尽管 linter 显示了一些错误,但它仍然有效。

您可以尝试以下几点:

  1. 尝试esversion在帐户设置中使用该选项,即

    {
      "esnext": true,
      "esversion": 8
    }
    
    Run Code Online (Sandbox Code Playgroud)

    我没有让评论变体起作用,而且这个帐户选项也不太可能起作用。似乎JSBin 使用了不支持esversion.

  2. 如果可能,请尝试在帐户设置中使用不同的 Linter,例如 ESLint。JSHint 之前有过各种错误,并且在采用最新的 ECMAScript 标准方面进展缓慢。

  3. 使用比 JSBin 更用户友好和现代的东西。