ECMAScript 2015 (ES6) 及更高版本

Node.js 是基于最新版本的 V8 构建的。 通过及时更新此引擎的最新版本,我们确保来自 JavaScript ECMA-262 规范的新功能能够及时提供给 Node.js 开发人员,并且持续提升性能和稳定性。

所有 ECMAScript 2015 (ES6) 功能分为三组: shippingstagedin progress 功能。

  • 所有 V8 认为稳定的 shipping 功能在 Node.js 上默认开启,并且不需要任何类型的运行时标志。
  • Staged 功能是几乎完成但 V8 团队认为不稳定的功能,需要运行时标志:--harmony
  • In progress 功能可以通过各自的 harmony 标志单独激活,但强烈建议不要这样做,除非用于测试目的。 注意:这些标志由 V8 公开,并且可能会在没有任何弃用通知的情况下更改。

哪些功能默认随哪个 Node.js 版本发布?

网站 node.green 基于 kangax 的 compat-table,提供了对各种 Node.js 版本中支持的 ECMAScript 功能的极佳概述。

哪些功能正在开发中?

新功能不断添加到 V8 引擎中。 一般来说,预计它们将在未来的 Node.js 版本中出现,但时间未知。

您可以通过 grepping --v8-options 参数来列出每个 Node.js 版本上可用的所有 *in progress* 功能。 请注意,这些是 V8 的不完整且可能已损坏的功能,因此使用它们需要您自担风险

node --v8-options | grep "in progress"

我的基础设施已设置为利用 --harmony 标志。 我应该删除它吗?

Node.js 上 --harmony 标志的当前行为是仅启用 staged 功能。 毕竟,它现在是 --es_staging 的同义词。 如上所述,这些是已完成但尚未被认为是稳定的功能。 如果您想安全地操作,尤其是在生产环境中,请考虑删除此运行时标志,直到它默认在 V8 上发布,并因此在 Node.js 上发布。 如果您保持启用状态,如果 V8 更改其语义以更紧密地遵循标准,您应该为进一步的 Node.js 升级破坏您的代码做好准备。

如何找到哪个版本的 V8 随特定版本的 Node.js 发布?

Node.js 提供了一种简单的方法来列出所有依赖项以及随特定二进制文件发布的各自版本,通过 process 全局对象。 如果是 V8 引擎,请在您的终端中键入以下内容以检索其版本

node -p process.versions.v8