最近,随着升级的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
不带--harmony
标志的功能:
- “ for-of”循环
- Map,Set,WeakMap,WeakSet(已经有问题了)
- 符号(已指定问题)
- 承诺(已经有问题)
- 数组方法:
- 目的:
- .observe()(最初计划用于ES7,但已于2015年11月2日完全从规范中删除)
- .is()
- .setPrototypeOf()
- .getOwnPropertySymbols()
- .getNotifier()(不是es6,这里是示例)
- .apply()和.call()(不是es6,与Funciton.prototype.call和Function.prototype.apply的用途相同)
- 数字属性和方法(已经有问题了)
- 数学方法(很多)(已经有问题了)
- 常数
我认为这就是我们所没有的--harmony
。
带有--harmony
标志的功能:
- 发电机
- 箭头功能(
--harmony_arrow_functions
与相比不需要标志io.js
) - 让变量-仅在
strict mode
- 二进制和八进制文字
-
字符串方法:
- .contains()(
includes()
在实际的ES6规范中已替换) - 。以。。开始()
- 。以。。结束()
- .codePointAt()
- 。重复()
- .normalize()
- String.fromCodePoint
- .contains()(
-
代理(在
--harmony-proxies
标志后面)
我认为就这些。也许我忘了一些东西-稍后再将其添加到列表中。
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功能感兴趣,因此您可以使用
利用与kangax网站相同的数据。
#2 Hard-回溯V8版本
Node使用V8引擎,因此确定Node中包括哪个V8版本可以告诉我们支持哪些ES6语言功能。您可以通过找出与Node捆绑在一起的V8版本node -p process.versions.v8
。
$ node -p process.versions.v8
4.6.85.31
然后,使用Google的V8项目资源,您可以找到每个版本中实现了哪些功能。V8项目保留了一个问题跟踪器,您可以在其中找到用和声标签标记的ES6 +功能。
文章标签:ecmascript-6 , javascript , node.js , v8
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!
评论已关闭!