Node.js 0.12 中可用的 ECMAScript 6 功能

ECMAScript 6 features available in Node.js 0.12

Node.js (0.12) 的新稳定版本最近发布,升级后的 Google 的 v8 JavaScript 引擎,v3.28.73.

在不使用 --harmony 标志的情况下,Node.js 当前存在哪些 ECMAScript 6 功能?

我检查了几个声称列出 ES 6 功能的站点,但它们似乎都已过时 - 最突出的是,this table (Update: now updated with current Node.js status as of 0.12), because several of the features are listed as requiring the --harmony flag while I found some of them being enabled by default (Maps, Sets, Symbols, to name a few). Update: Node specific tables 已经可用

此外,尝试 google 此信息纯粹针对 v8 引擎提供了最新信息 - 当前 v8 版本是 4.2.*,这是远远领先于 Node.js 使用的内容。

我希望这个问题(及其答案)将成为 Node.js 开发人员现在可以使用的 ES 6 功能的全面总结。

在 Node.js 0.12 中启用的 ES 6 功能我目前知道:

没有 --harmony 标记的特征:

我认为这就是我们没有 --harmony 标志的全部内容。

具有 --harmony 标志的特征:

我想就这些了。也许如果我忘记了什么 - 我稍后会把它添加到列表中。

ES6 特性分阶段渗透到 Node 中。 Node 使用 Google 的 V8 作为 JavaScript 引擎。 Node 中支持的功能意味着它首先必须在 V8 中实现,然后 Node 团队必须将其合并到 Node.js 中。

Google 的团队大约每六周发布一个新版本的 V8,然后由 Node 团队将其投入使用。

手动整理的语言功能列表很好,但很快就会过时。 Node 0.12 不再那么不断变化,但通常在新版本的 Node 推出后,手动策划的列表就会过时。

这里有两种替代方法来检查 Node 版本支持的功能,而不依赖于静态列表。如需进一步阅读和更详细的使用这些示例,您可以查看 "How to check if Node.js supports ES 6 language feature"

#1 简单 - 兼容性 table

一个动态生成的列表依赖于小测试来确认语言功能的存在更好地保持最新。一个这样的流行列表是 kangax.github.io/compat-table/es6/。我们只对 Node 特性感兴趣,所以你可以使用

http://node.green

利用与 kangax 站点相同的数据。

#2 困难 - 回溯 V8 版本

Node 使用 V8 引擎,因此确定 Node 中包含哪个版本的 V8 可以告诉我们支持哪些 ES6 语言功能。您可以使用 node -p process.versions.v8 查看 Node 中捆绑了哪个版本的 V8。

$ node -p process.versions.v8
4.6.85.31

然后使用 Google 的 V8 项目资源,您可以找到每个版本中实现的功能。 V8 项目保留了一个 issue tracker,您可以在其中找到标有 harmony 标签的 ES6+ 功能。