ECMAScript 2015 (ES6) 以降
Node.js は、V8 の最新バージョンを基に構築されています。このエンジンの最新リリースに追従することで、JavaScript ECMA-262 仕様の新しい機能を Node.js 開発者にタイムリーに提供するとともに、パフォーマンスと安定性の向上を継続的に実現しています。
すべての ECMAScript 2015 (ES6) 機能は、出荷済み、ステージング済み、開発中の 3 つのグループに分類されます。
- V8 が安定していると見なしているすべての出荷済み機能は、Node.js ではデフォルトで有効になっており、いかなる種類の実行時フラグも必要ありません。
- V8 チームによって安定していないと見なされている、ほぼ完成した機能であるステージング済み機能には、実行時フラグ `--harmony` が必要です。
- 開発中の機能は、それぞれの harmony フラグによって個別に有効化できますが、テスト目的以外ではこれは強くお勧めしません。注: これらのフラグは V8 によって公開されており、非推奨の通知なしに変更される可能性があります。
デフォルトでは、どの機能がどの Node.js バージョンに同梱されていますか?
Web サイト node.green は、kangax の compat-table に基づいて、さまざまなバージョンの Node.js でサポートされている ECMAScript 機能の優れた概要を提供しています。
どの機能が開発中ですか?
V8 エンジンには常に新しい機能が追加されています。一般的に、時期は不明ですが、将来の Node.js リリースで提供される予定です。
`--v8-options` 引数を通じて grep することで、各 Node.js リリースで使用可能なすべての *開発中* の機能を一覧表示できます。これらは不完全であり、場合によっては V8 の機能が壊れている可能性があるため、自己責任で使用してください。
node --v8-options | grep "in progress"
インフラストラクチャは --harmony フラグを活用するように設定されています。削除する必要がありますか?
Node.js での `--harmony` フラグの現在の動作は、**ステージング済み**機能のみを有効にすることです。結局のところ、これは現在 `--es_staging` の同義語です。前述のとおり、これらはまだ安定していないと見なされている完成した機能です。特に本番環境では、安全にプレイしたい場合は、V8 で、ひいては Node.js でデフォルトで出荷されるまで、このランタイムフラグを削除することを検討してください。これを有効にしたままにすると、V8 が標準により厳密に準拠するようにセマンティクスを変更した場合、Node.js のアップグレードによってコードが破損する可能性があります。
特定のバージョンの Node.js に同梱されている V8 のバージョンを調べるにはどうすればよいですか?
Node.js は、`process` グローバルオブジェクトを通じて、特定のバイナリに同梱されているすべての依存関係とそれぞれのバージョンを一覧表示する簡単な方法を提供します。V8 エンジンの場合、ターミナルで次のように入力してバージョンを取得します。
node -p process.versions.v8