The future starts today

Webとか英語とか育児とかに関する雑記

来月公開のES2016の機能とその先について

photo by Zadi Diaz

ES2015がだいぶ浸透してきたと思ったら、今度はES2016の公開が目前に迫っています。

  • ES2015(済)
  • ES2016(2016年6月)
  • ES2017(2017年6月)

ECMAScriptはご存知の通り、一年ごとに策定されることになりました。

各仕様の策定具合は4つのstageで表されています。(Strowmanは省略)

  1. proposal
  2. draft
  3. candidate
  4. 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