LoginSignup
14
10

More than 5 years have passed since last update.

Node.jsのどのバージョンでES2015以降の各仕様が使えるか

Posted at

はじめに

僕はブラウザ向けのJavaScriptを書くときは必ずBabelでトランスパイルしてるので、特に互換性は考えずJSの最新機能を使ってます。

でもCLIツールをNode.jsで書いたりする場合はランタイムが固定なので、Babeることなく「このバージョン以降のNode.jsでそのまんま動くように」なるべく書きたいのです。

The TC39 Processの性質上、「ES2018はNode v.XX以降でサポート」みたいな感じではなく、個別のProposalごとに実装されるタイミングが違います。

MDNの「ブラウザ実装状況」にはNode.jsも含まれていて、機能別に調べれば分かるんですが、「Node.jsのこのバージョンではどこまでの機能使えるんだっけ?」という確認をしたいケースが多かったので、一覧にまとめてみました!
一覧にまとまっているサイトを紹介します。

Node.js ES2015 Support

これを見れば万事解決。詳細な表にまとまってます。
https://node.green/

以下、読み飛ばし可

最初、上記サイトの存在を見つけられなくて「なんで誰もまとめてないの?なら俺がやってやる!」と思って、自分でES2016/2017/2018の新機能とMDNの対応ページを見比べながらポチポチまとめていたのでありますが、頑張って書き終えたあと、もう少しググったら見事に発見してしまって、完全に「車輪の再発明」というか「写真の再撮影」的な単なる劣化コピーをしていたことに気づいたわけでして・・・orz

ググってなぜこれにたどり着けなかったのかなぁ。。
せめて上記サイトにたどり着く日本人が増えることを祈ってあえて以下も残しつつこのエントリを投稿します。

はじめに

前略

ES2015は、import/export以外は「使えて当たり前」な感じなので、載せませんでした。
ES2018は未対応や「?」がまだ多かったり、ES2019以降もこのサイクルは続くので、随時更新していきたいと思ってます!

ES2016

機能 標準サポート --harmonyでサポート 備考
Array#includes 6.0.0 5.0.0
べき乗演算子** 7.0.0 6.5.0

ES2017

機能 標準サポート --harmonyでサポート 備考
Object.values
Object.entries
7.0.0 6.5.0
String#padStart
String#padEnd
8.0.0 7.0.0
Object.getOwnPropertyDescriptors 7.0.0 6.5.0
関数の末尾のカンマ 8.0.0
async / await 7.6.0 7.0.0
Atomics 8.10.0 wake()は非標準名

ES2018

機能 標準サポート --harmonyでサポート 備考
テンプレートリテラルのエスケープシーケンス見直し × 2018.10.28現在
Promise#finally() 10.0.0
Object リテラルでのスプレッド構文
{ ...obj1, ...obj2 }
8.3.0 8.0.0
for await...of ? 9.2.0 --harmony-async-iteration
正規表現の追加 ? lookbehind assertions(後読み)以外の情報は載ってない?

参考リンク

ES2016 / ES2017で実装される機能まとめ
ES2018で追加される機能まとめ

14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10