ECMAScript 2015(ES6)及更高版本
Node.js是针对现代版本的V8构建的,通过与该引擎的最新版本保持同步,我们确保及时向Node.js开发人员提供JavaScript ECMA-262规范的新功能,以及持续的性能和稳定性改进。
所有ECMAScript 2015(ES6)功能分为三组,用于交付、阶段和进行中的功能:
- V8认为稳定的所有交付功能在Node.js上默认打开,不需要任何类型的运行时标志。
- 分阶段的功能,几乎完成的功能,V8团队认为不稳定,需要运行时标志:
--harmony
。 - 正在进行的功能可以通过各自的
harmony
标志单独激活,但除非出于测试目的,否则这是非常不鼓励的,注意:这些标志由V8公开,并且可能会在没有任何弃用通知的情况下更改。
哪些功能默认包含哪个Node.js版本?
网站node.green基于kangax的compat-table,提供了各种版本的Node.js中支持的ECMAScript功能的完美概述。
哪些功能正在进行中?
V8引擎不断添加新功能,一般来说,期望它们落在未来的Node.js版本上,尽管时间尚不清楚。
你可以通过grep --v8-options
参数列出每个Node.js版本上可用的所有正在进行的功能,请注意,这些是不完整的,可能是V8的损坏功能,因此使用它们需要你自担风险:
node --v8-options | grep "in progress"
特定功能的性能如何?
V8团队一直在努力提高新语言功能的性能,以最终与EcmaScript 5及更早版本中的已转换的或对应的原生保持一致,目前的进展情况在网站上以six-speed跟踪,显示了ES2015和ESNext功能与其原生ES5相比的性能。
ES2015及更高版本引入的优化功能的工作通过性能计划进行协调,V8团队收集并协调需要改进的领域,并设计文档来解决这些问题。
我的基础设施设置为利用--harmony
标志,我应该删除吗?
Node.js上--harmony
标志的当前行为是仅启用分阶段功能,毕竟,它现在是--es_staging
的同义词,如上所述,这些是尚未被认为稳定的完整特征。如果你想要安全地玩,特别是在生产环境中,请考虑删除此运行时标志,直到它默认发布在V8上,所以,在Node.js上也是。如果启用此功能,则应准备好进一步的Node.js升级,如果V8更改其语义以更接近标准,则升级将破坏你的代码。
如何找到特定版本的Node.js附带的V8版本?
Node.js提供了一种简单的方法通过process
全局对象来列出附带特定二进制文件的所有依赖项和相应版本,如果是V8引擎,请在终端中键入以下内容以检索其版本:
node -p process.versions.v8