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

ES6 not getting enabled in JSBin, despite selecting the “ES6 / Babel” option

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

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

⚠️ 'const' is available in ES6 (use esnext option) or Mozilla JS extensions (use moz).

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

还好还有Google.

有一个封闭的bug report有一些讨论,建议您可以添加其中一行

// jshint esnext: true

/* jshint esnext: true */

在你的 JS 的顶部。

好像在“账户设置”→“首选项”→“Linting”→“jshint”中也有注册用户的账户设置,可以添加这样的规则:

{
  "esnext": true
}

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

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

以下是您可以尝试的一些方法:

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

    {
      "esnext": true,
      "esversion": 8
    }
    

    我没有让评论变体起作用,而且这个帐户选项也不太可能起作用。好像是JSBin uses an older JSHint that doesn’t support esversion.

  2. 尝试使用不同的 Linter,例如ESLint,如果可能的话,在账户设置中。 JSHint 之前有过各种错误,采用最新的 ECMAScript 标准很慢。

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