ECMAScript 6function在Node.js 0.12中可用

Node.js(0.12)的一个新的稳定版本最近登陆升级的Google的v8 JavaScript引擎, v3.28.73

什么ECMAScript 6function目前在Node.js中,而不使用--harmony标志?

我检查了几个网站,声称列出的ES 6function,但他们都似乎过时了 – 最显着的是, 这张表 ( 更新: 现在更新与当前Node.js状态0.12 ),因为几个function被列为需要--harmony标志,而我发现其中一些是默认启用(地图,集合,符号,仅举几例)。 更新 : 节点特定的表已经可用

此外,试图纯粹为v8引擎谷歌这个信息提供了最新的信息 – 目前的v8版本是4.2。* ,这是比Node.js使用相当的领先。

我希望这个问题(及其答案)将成为一个全面的总结,介绍了Node.js开发人员现在可以使用哪些ES 6function。

在Node.js 0.12中启用了ES 6function我目前知道:

  • 地图,集合/弱地图,弱集合
  • 符号
  • Object.observe
  • 承诺
    • .isInteger
    • .isSafeInteger
    • .isNaN
    • 小量
    • .MIN_SAFE_INTEGER
    • .MAX_SAFE_INTEGER
  • math
    • .clz32
    • .imul
    • 。标志
    • .log10
    • .log2
    • .log1p
    • .expm1
    • .cosh
    • .sinh
    • .tanh
    • .acosh
    • .asinh
    • .atanh
    • .trunc
    • .fround
    • .cbrt
    • .hypot

没有--harmony标志的特征:

  • “for-of”循环
  • Map , Set , WeakMap , WeakSet (已经指定)
  • 符号 (已经指定)
  • 承诺 (已经指定)
  • 数组方法:
    • .keys()
    • .values()
    • .entries()
    • [Symbol.iterator]
  • 目的:
    • .observe() (最初是为ES7计划的 ,但在2015年11月2日完全从规范中删除 )
    • 。是()
    • .setPrototypeOf()
    • .getOwnPropertySymbols()
    • .getNotifier()(不是es6, 这里的例子)
    • .apply()和.call()(不是es6,与Funciton.prototype.call和Function.prototype.apply相同)
  • 数字属性和方法(已经指定)
    • .isInteger()
    • .isSafeInteger()
    • .isNaN()
    • .isFinite()
    • EPSILON
    • MIN_SAFE_INTEGER
    • MAX_SAFE_INTEGER
  • math方法( 很多 )(已经指定)
  • 常量

我认为这就是我们没有--harmony旗帜的一切。

--harmony标志的特点:

  • 发电机
  • 箭头函数 (不需要io.js标志,而io.js
  • 让variables – 只在strict mode
  • 二进制和八进制文字
  • string方法:

    • .contains() (在实际的ES6规范中被includes()取代)
    • 。以。。开始()
    • 。以。。结束()
    • .codePointAt()
    • 。重复()
    • .normalize()
    • String.fromCodePoint
  • 代理 (在--harmony-proxies标志后面)

我想就是这样。 也许如果我忘记了一些东西 – 我会稍后将它添加到列表中。

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

Google团队每六个星期就会发布一个新版本的V8,然后由Node团队来使用。

手动策划的语言function列表很好,但可能会很快过时。 节点0.12不再那么stream行,但是一旦新版本的Node推出,通常手动策划的列表就会过时。

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

#1简单的兼容性表格

dynamic生成的列表依赖于小testing来确认语言function的存在保持最新状态。 一个这样的stream行列表是kangax.github.io/compat-table/es6/。 我们只对节点function感兴趣,所以你可以使用

http://node.green

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

#2硬回溯V8版本

节点使用V8引擎,因此确定哪个版本的V8包含在Node中告诉我们什么是ES6语言function。 您可以通过node -p process.versions.v8find哪个版本的V8已经捆绑在Node中。

 $ node -p process.versions.v8 4.6.85.31 

然后使用Google的V8项目资源,您可以find每个版本中实现了哪些function。 V8项目保留了一个问题跟踪器 ,您可以在其中find超出标有和谐标签的function的ES6 +。