ECMAScript 2015 (ES6) 及更高版本
Node.js 是基于现代版本的 V8 构建的。通过与该引擎的最新版本保持同步,我们确保了 JavaScript ECMA-262 规范中的新功能能及时地带给 Node.js 开发者,并持续提升性能和稳定性。
所有 ECMAScript 2015 (ES6) 的功能被分为三组:shipping(已发布)、staged(待定)和 in progress(进行中)功能。
- 所有 shipping 功能,即 V8 认为稳定的功能,在 Node.js 中默认开启,并且不需要任何运行时标志。
- Staged 功能,即 V8 团队认为尚未稳定但已接近完成的功能,需要一个运行时标志:
--harmony。 - In progress 功能可以通过它们各自的 harmony 标志单独激活,尽管除非用于测试目的,否则强烈不建议这样做。请注意:这些标志由 V8 暴露,可能会在没有任何弃用通知的情况下发生变化。
哪些功能默认随哪个 Node.js 版本发布?
网站 node.green 基于 kangax 的 compat-table,对不同 Node.js 版本中支持的 ECMAScript 功能提供了一个很好的概述。
哪些功能正在进行中?
新功能正不断地被添加到 V8 引擎中。总的来说,预计它们会出现在未来的 Node.js 版本中,但具体时间尚不确定。
您可以通过搜索 --v8-options 参数来列出每个 Node.js 版本中所有进行中的功能。请注意,这些是 V8 的不完整且可能存在问题的功能,因此使用它们需要您自担风险。
node --v8-options | grep "in progress"
我的基础架构已设置为利用 --harmony 标志。我应该移除它吗?
--harmony 标志在 Node.js 中的当前行为是仅启用 staged 功能。毕竟,它现在是 --es_staging 的同义词。如上所述,这些是已完成但尚未被认为稳定的功能。如果您想确保安全,尤其是在生产环境中,请考虑移除此运行时标志,直到它在 V8 中默认发布,并因此在 Node.js 中默认发布。如果您保持启用此标志,您应该为后续 Node.js 升级可能破坏您的代码做好准备,如果 V8 更改其语义以更紧密地遵循标准。
如何找出特定 Node.js 版本附带的 V8 版本?
Node.js 提供了一种简单的方法,通过 process 全局对象来列出特定二进制文件附带的所有依赖项及其各自的版本。对于 V8 引擎,请在您的终端中输入以下命令以检索其版本:
node -p process.versions.v8