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()
取代) - 。以。。开始()
- .endsWith()
- .codePointAt()
- 。重复()
- .normalize()
- String.fromCodePoint
- .contains() (在实际的ES6规范中被
-
代理 (在
--harmony-proxies
标志后面)
我想就是这样。 也许如果我忘记了一些东西 – 我会在稍后添加到列表中。
ES6function分阶段下降到节点。 Node使用Google的V8作为JavaScript引擎。 Node中支持的function意味着它首先必须在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感兴趣,所以你可以使用
利用与kangax站点相同的数据。
#2硬回溯V8版本
节点使用V8引擎,因此确定哪个版本的V8包含在Node中告诉我们什么是ES6语言function。 您可以通过node -p process.versions.v8
find哪个版本的V8已经捆绑在Node中。
$ node -p process.versions.v8 4.6.85.31
然后使用Google的V8项目资源,您可以find每个版本中实现了哪些function。 V8项目保留了一个问题跟踪器 ,您可以在其中find超出标有和谐标签的function的ES6 +。