ECMAScript 6特性在 Node.js 0.12中可用

最近,一个新的稳定版 Node.js (0.12)发布了,它带有升级版的 Google v8 JavaScript 引擎 V3.28.73

当前 Node.js 中没有使用 --harmony标志的 ECMAScript 6特性是什么?

我已经检查了几个网站声称列出 ES 6的功能,但是他们似乎都过时了-最突出的是,这张桌子(更新: 现在更新为0.12的当前 Node.js 状态) ,因为一些功能被列为需要 --harmony标志,而我发现其中一些是默认启用(地图,集,符号,等等)。更新: 特定于节点的表已经上市

另外,如果纯粹为了 v8引擎而搜索这些信息,会得到太多的最新信息——当前的 v8版本是 4.2. * ,这比 Node.js 使用的版本要先进得多。

我希望这个问题(以及它的答案)能够成为一个全面的总结,说明现在 Node.js 开发人员可以使用哪些 ES 6特性。

我目前知道的 Node.js 0.12中支持的 ES 6特性:

  • 映射,集合/弱映射,弱集合
  • 符号
  • 目标,观察
  • 我保证
  • 号码
    • 。是整数
    • 。是安全整数
    • 。 isNaN
    • 。 EPSILON
    • . MIN _ SAFE _ INTEGER
    • . MAX _ SAFE _ INTEGER
    • 。 clz32
    • 。 imul
    • 。签署
    • 。 log10
    • 。 log2
    • 。 log1p
    • 。 expm1
    • 。科什
    • 。辛
    • 。坦
    • 。 acosh
    • 。 asinh
    • 。 atanh
    • 。 trunc
    • 。发现
    • 。 cbrt
    • 。下降
44696 次浏览

--harmony标志的功能:

没有 --harmony标志,我们就只有这些了。

具有 --harmony标志的功能:

我想就这些了。如果我忘了什么东西的话,我会把它加到单子上的。

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

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

手工策划的语言特性列表很好,但很快就会过时。Node 0.12不再处于不断变化之中,但是一旦新版本的 Node 推出,通常手动策划的列表就会过时。

以下是两种不依赖静态列表检查 Node 版本支持哪些特性的替代方法。要进一步阅读和更详细的例子使用这些,您可以检查 “如何检查 Node.js 是否支持 ES 6语言特性”

# 1简易兼容表

动态生成的列表依赖于小型测试来确认语言特性的存在,从而更好地保持最新状态。其中一个受欢迎的名单就是 kangax.github.io/compat-table/es6/。我们只对 Node 特性感兴趣,因此您可以使用

Http://node.green

利用了与 Kangax 站点相同的数据。

# 2 Hard-backtrack V8 version

Node 使用 V8引擎,因此确定 Node 中包含哪个版本的 V8将告诉我们支持哪些 ES6语言特性。您可以了解哪个版本的 V8是与 node -p process.versions.v8绑定在 Node 中的。

$ node -p process.versions.v8
4.6.85.31

然后使用 Google 的 V8项目资源,您可以找到在每个版本中实现的特性。V8项目保留了一个 问题追踪器,您可以在其中找到带有 和谐标签的特性之外的 ES6 + 。