【问题标题】:ECMA 6 Not working although experimental js is enabled尽管启用了实验性 js,但 ECMA 6 不起作用
【发布时间】:2015-12-24 21:53:41
【问题描述】:

我有最新的 Chrome 版本(45 和 47 版的 Chrome Canary),都启用了 Experimental Javascript 标志。我想使用ECMA6,但它不起作用。我不知道为什么。是否还有任何必须启用的技巧或其他标志?

ECMA6 的每个保留字(如 import、class 或其他)都会在 Chrome 45 中引发“Uncaught SyntaxError: Unexpected reserved word”错误,并在 Chrome Canary 中引发“Uncaught SyntaxError: Unexpected token import”错误。

我将不胜感激。而且,因为几个月前我问过这个问题,但没有得到任何答案,但这个 Using ECMAScript 6 的“可能重复”,它不是。它不能解决我的问题。

谢谢。

--- 编辑 --- 我想使用模块,因为我更喜欢 ecma6 模块而不是使用 Require 或 Common。而且我也喜欢类的糖语法,代码看起来更好:)

【问题讨论】:

  • 最新版本的 Chrome 支持某些(不是全部)ES6 功能。请准确说明您正在运行哪个版本的 Chrome,以及您认为您是如何启用这些功能的,以及您发现哪些 ES6 功能未启用。你的问题需要更具体。创建一个可重现的场景。
  • 你是对的,我添加更多信息:)

标签: javascript ecmascript-6


【解决方案1】:

任何浏览器尚不原生支持模块。您将需要使用转译器,例如 TraceurBabel。请查看以下内容之一以帮助您入门:

至于类,您可以在本地使用这些类,而无需通过转译器。您可以在此处查看兼容性表,了解当前哪些浏览器原生支持类:

https://kangax.github.io/compat-table/es6/

到目前为止,您可以看到大多数浏览器尚不支持原生类。但是,如果您使用的是 Babel 或 Traceur,则不必担心。

【讨论】:

【解决方案2】:

type="module" 添加到脚本 标记。这应该可以解决您的问题。

【讨论】:

    【解决方案3】:

    这里有几个功能列表,告诉您哪些功能在 Chrome 45 中可用。

    Chrome 功能状态:https://www.chromestatus.com/features

    ES6 兼容性矩阵:https://kangax.github.io/compat-table/es6/

    您会发现许多功能(例如 class Sugar 语法)在 Chrome 45 中运行良好,但需要严格模式才能启用。

    例如,如果您在 Chrome 45 或更高版本中运行这个使用 class 的 jsFiddle,它将工作:http://jsfiddle.net/jfriend00/xd56k8n3/。如果你在严格模式之外运行它,它会报告Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode

    模块看起来尚不支持任何浏览器。


    仅供参考,现在在 ES6 中编写代码的一种常见方法是使用像 BabelTraceur 这样的转译器,您将 ES6 代码输入其中,并将其转换为在当前浏览器中运行的 ES5 兼容代码。您可以使用 ES6 编写代码,但要与当前浏览器兼容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      • 2017-09-29
      • 2013-07-04
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多