Chrome 尽管启用了实验JS,但ECMAScript 6不工作

htzpubme  于 2023-02-20  发布在  Go
关注(0)|答案(3)|浏览(178)

我有最新的Chrome版本(45和Chrome Canary版本47),都启用了Experimental JavaScript标记。我想使用ECMAScript 6,但它不工作。我不知道为什么。是否有任何技巧或其他标记必须启用,太?
ECMAScript 6的每个保留字(如importclass或其他)都会抛出一个 “未捕获的SyntaxError:Chrome 45中出现意外的保留字”“和未捕获的 * SyntaxError:Chrome Canary中出现意外标记import“* 错误。
几个月前我问过这个问题,除了Using ECMAScript 6的“可能重复”外,没有得到任何答案,但它并没有解决我的问题。
我想使用模块,因为我更喜欢ECMAScript模块而不是使用CommonJS中的require。而且我也喜欢类的语法糖 - 代码看起来更好。

nnsrf1az

nnsrf1az1#

模块尚未在任何浏览器中得到原生支持。您将需要使用诸如TraceurBabel之类的transpiler。请参阅以下内容之一以帮助您入门:

至于类,你可以直接使用它们,而不需要经过一个transpiler。你可以查看这里的兼容性表,看看现在哪些浏览器支持类:
https://kangax.github.io/compat-table/es6/
到目前为止,你可以看到大多数浏览器还不支持类,但是,如果你使用Babel或者Traceur,那就不需要担心了。

dxxyhpgq

dxxyhpgq2#

type="module"添加到script标记中,这样就可以解决您的问题。

k7fdbhmy

k7fdbhmy3#

这里有几个功能列表,告诉你什么功能在Chrome 45中工作。
Chrome功能状态:https://www.chromestatus.com/features
ES6兼容性矩阵:https://kangax.github.io/compat-table/es6/
你会发现很多特性,比如class sugar语法,在Chrome45中运行良好,但是需要严格模式才能启用。
例如,如果您在Chrome 45或更高版本中运行使用class的jsFiddle,它将工作:http://jsfiddle.net/jfriend00/xd56k8n3/。如果在strict模式之外运行,它将报告Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not yet supported outside strict mode
模块看起来还没有在任何浏览器中得到支持。
顺便说一句,现在在ES6中编写代码的一种常见方法是使用BabelTraceur这样的transpiler,你将ES6代码输入其中,它将其转换为在当前浏览器中运行的ES5兼容代码。

相关问题