最近,随着升级的Google v8 JavaScript引擎v3.28.73发行了新的稳定版Node.js(0.12)。
不使用该--harmony
标志,Node.js当前具有哪些ECMAScript 6功能?
我已经检查了几个声称列出ES 6功能的站点,但是所有这些站点似乎都已过时-最突出的是,此表(更新: 现在更新为当前Node.js的状态为0.12),因为其中一些功能列为:--harmony
我发现其中一些默认情况下处于启用状态(地图,集合,符号等)时,需要使用该标志。更新:特定于节点的表已提供
此外,尝试仅针对v8引擎搜索此信息会提供太多最新信息-当前的v8版本为4.2。*,这比Node.js所使用的要早得多。
我希望这个问题(及其答案)将成为Node.js开发人员现在可以使用的ES 6功能的全面摘要。
我目前知道在Node.js 0.12中启用的ES 6功能:
- 地图,集合/ WeakMap,WeakSet
- 符号
- 对象观察
- 承诺
- 数
- .isInteger
- .isSafeInteger
- .isNaN
- .EPSILON
- .MIN_SAFE_INTEGER
- .MAX_SAFE_INTEGER
- 数学
- .clz32
- .imul
- 。标志
- .log10
- .log2
- .log1p
- .expm1
- .cosh
- .sinh
- .tanh
- .acosh
- .asinh
- .atanh
- .trunc
- .fround
- .cbrt
- .hypot
ES6的功能分阶段逐步扩展到Node。Node使用Google的V8作为JavaScript引擎。Node支持的功能意味着它必须首先在V8中实现,然后Node团队必须将其合并到Node.js中。
Google团队大约每六周发布一次新版本的V8,然后由Node团队来使用它。
手动策划的语言功能列表很不错,但很快就会过时。Node 0.12不再流行,但是通常在新版本的Node推出后,手动创建的列表就会过时。
这是两种检查节点版本支持哪些功能的方法,而无需依赖静态列表。有关进一步的阅读和使用它们的更详细的示例,您可以检查“如何检查Node.js是否支持ES 6语言功能”
#1简易-兼容性表
动态生成的列表依靠小型测试来确认语言功能的存在,从而可以保持最新状态。这样的流行列表之一就是kangax.github.io/compat-table/es6/。我们仅对Node功能感兴趣,因此您可以使用
http://node.green
利用与kangax网站相同的数据。
#2 Hard-回溯V8版本
Node使用V8引擎,因此确定Node中包括哪个V8版本可以告诉我们支持哪些ES6语言功能。您可以通过找出与Node捆绑在一起的V8版本
node -p process.versions.v8
。然后,使用Google的V8项目资源,您可以找到每个版本中实现了哪些功能。V8项目保留了一个问题跟踪器,您可以在其中找到用和声标签标记的ES6 +功能。