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