来月公開のES2016の機能とその先について
ES2015がだいぶ浸透してきたと思ったら、今度はES2016の公開が目前に迫っています。
- ES2015(済)
- ES2016(2016年6月)
- ES2017(2017年6月)
ECMAScriptはご存知の通り、一年ごとに策定されることになりました。
各仕様の策定具合は4つのstageで表されています。(Strowmanは省略)
- proposal
- draft
- candidate
- finished
毎年の策定時点でStage4に到達していたものがその年のECMAScriptとして入ってきます。
このあたりは@azuさんのスライドが分かりやすいです。
TC39 Process: Stage · ECMAScriptとは何か?
ES2016に含まれる機能はすでに決定しており、以下の2つとなっています。
- Exponentiation Operator
- Array.prototype.includes
また、現時点(2016/06/10)では新たに以下の2つがStage4に達しています。
これらはES2017入りが決定しています。
- Object.entries
- Object.values
それぞれどんな機能なのか
Exponentiation Operator(ES2016)
xのn乗を計算するための式です。
3 ** 3 // same as 3 * 3 * 3 // 27 let x = 3; x **= 3; // 27
Array.prototype.includes(ES2016)
配列内に特定の要素があるかどうかをチェックします。
今までのarray.indexOf(x) > -1
のようにチェックしなくてはならなかった気持ち悪さから解放されます。
['hoge', 'piyo', 'fuga'].includes('piyo') // true
Object.entries(ES2017)
列挙可能なkeyとvalueの組み合わせであるObjectを二次元配列に変換します。
Object.entries({a : 1, b : 2, c : 3}) // [['a', 1], ['b', 2], ['c', 3]]
Object.values(ES2017)
Objectからvalueを抜き出し、配列にします。
Object.values({a : 1, b : 2, c : 3}) // [1, 2, 3]
これでlodash等を使わずともサクッとvalueを抜き出すことが可能になります。
その他機能の進捗状況
下記ページから確認できます。 github.com