ECMAScript2016 リリースですね
- カテゴリ:
- JavaScript
- コメント数:
- Comments: 0
◆ Array#includes
◆ **
◆ **
そろそろかなーと思ってたら公開されていました
公開されたからと言っても今年のはじめには どれが ES2016 に含まれるか確定してたわけですし 何があるということもないですけどね
これまで
と indexOf で -1 か判定やってたのが真偽値で返ってくるので 条件分岐がちょっと楽になります
indexOf と同じで型もみるので 1 と "1" は別物です
また indexOf と同じく 第二引数で開始位置を指定できます
String と同じく contains じゃなく includes です
DOM 関連は contains なのでややこしいですが仕方ないので諦めましょう
ECMA と w3c で作ってる団体が違うからかな?
自分で
他の言語ではあるものも多いですが N 乗するものです
Chrome 51 ではデスクトップ版はバグがあるので実装されてますが隠されています
このフラグを Chrome の起動時につけると動きます
Android では 51 から使えるようです
去年の ECMAScript 2015 からこれまでとは変わりました
名前もこれまでの ES3, ES4(なくなった), ES5, ES6 と順番に数字だったのが 2015 と年になりましたしね
正式名称は ECMAScript 2015 のようにリリース年が付いてる方
ちゃんとしたスペックの文章だとこうなってます
ES5
ES6
ES7
ES5 とか 6 は 5th Edition のようにエディションのことです
なので今後も 8, 9, 10 と増えていくはず
でもこれまでは 大きな機能や構文の追加があってから新しいバージョンになっていましたが 今後というか ES2015 からは毎年リリースになりました
タイミングは今年と同じ流れで 1 月末頃に締め切りがあってそのタイミングで完了してる機能が 6 月に文書化されて正式リリースです
6 月には ECMA という ECMAScript 作ってるところの General Assembly という会議があるので そこで最終承認されてからリリースになるようです
これまでからすると 会議のあとすぐみたいですね
来年は 6 月の 13, 14 日 (日本時間だと 1日後)らしいので来年も同じ頃に ECMAScript 2017 がリリースされるはずです
1 年ごとにリリースになりましたが 次の新機能や 提案されてる機能が正式な仕様に確定するまであとどれくらいかの目安は TC39 のリポジトリで確認できます
TC39 が ECMA の中で ECMAScript を担当してるところです
TC は technical committee の略
ここにある Stage が機能の提案 (Proposal) に対する完了までの進み具合です
0 から始まって 4 まであります
5 段階です
4 になれば完了なので来年の頭の ES2017 の締め切りまでに 4 になったら それは ES2017 の新機能ということです
0 は誰でも書ける「こんなの欲しいー」くらいなものなので 別ページにまとめられています
1,2,3 と進んで 3 までくれば仕様はもう完成していて ブラウザの実装待ちやテスト待ちだったりするので 使えるようになるものはほぼ決まってると言っても良いような段階なのでサンプルコード見て こんなの入るんだー と眺めてると良いと思います
1 や 2 だとまだ仕様が変わったり なくなったりの可能性もあるので 使えるようになったら良いなーくらいの気分で眺めてるのがいいかもしれません
最終の 4 になるには 2 つの実装でテストに通る必要があるようです
たいてい Firefox と Chrome だと思うのでこのブラウザの新機能の実装の進み具合を見てると良さそうです
4 になったのは完了済みとしてまた別のページにまとめられています
0 ~ 4 のそれぞれがどんな意味かの詳しくはここ
英文が多いです
日本語版も探せば誰かが公開してると思います
あと ここに TC39 の会議のメモが置いてるようです
英語が辛いので私は読むの諦めましたが JavaScript の新しい情報を仕入れたい人には役立ちそうです
CSS も CSS3 から似た感じでモジュール単位で仕様決めて勧告ってことになってますし 機能ごとにリリースしていってくれたほうがいっき増えるよりは使う方も楽です
一度覚えたら数年は新しいことしなくていい方が良いって人には辛いですけどね
公開されたからと言っても今年のはじめには どれが ES2016 に含まれるか確定してたわけですし 何があるということもないですけどね
ECMAScript 2016 の新機能
意外とたった 2 つだけですincludes
ひとつは Array のメソッド includes です;[1,2,3].includes(1)
// true
;[1,2,3].includes("1")
// false
// true
;[1,2,3].includes("1")
// false
これまで
!!~[1,2,3].indexOf(1)
// true
// true
と indexOf で -1 か判定やってたのが真偽値で返ってくるので 条件分岐がちょっと楽になります
indexOf と同じで型もみるので 1 と "1" は別物です
また indexOf と同じく 第二引数で開始位置を指定できます
;[1,2,3].includes(1, 2)
// false
// false
String と同じく contains じゃなく includes です
DOM 関連は contains なのでややこしいですが仕方ないので諦めましょう
ECMA と w3c で作ってる団体が違うからかな?
自分で
Array.prototype.contains = Array.prototype.includes
String.prototype.contains = String.prototype.includes
とやっておけばどっちでも使えるので迷っても大丈夫String.prototype.contains = String.prototype.includes
**
Exponentiation operator というそうです他の言語ではあるものも多いですが N 乗するものです
Math.pow(2, 3)
// 8
2 ** 3
// 8
Math.pow(3, -4)
// 0.012345679012345678
3 ** -4
// 0.012345679012345678
// 8
2 ** 3
// 8
Math.pow(3, -4)
// 0.012345679012345678
3 ** -4
// 0.012345679012345678
Chrome 51 ではデスクトップ版はバグがあるので実装されてますが隠されています
--js-flags=--harmony-exponentiation-operator
このフラグを Chrome の起動時につけると動きます
Android では 51 から使えるようです
ECMAScript
せっかくなので ES のリリースまでの流れをまとめてみました去年の ECMAScript 2015 からこれまでとは変わりました
名前もこれまでの ES3, ES4(なくなった), ES5, ES6 と順番に数字だったのが 2015 と年になりましたしね
正式名称は ECMAScript 2015 のようにリリース年が付いてる方
ちゃんとしたスペックの文章だとこうなってます
ES5
Standard ECMA-262
5.1 Edition / June 2011
ECMAScript® Language Specification
This is the HTML rendering of Ecma-262 Edition 5.1, The ECMAScript Language Specification.
ES6
Standard ECMA-262
6th Edition / June 2015
ECMAScript® 2015 Language Specification
This is the HTML rendering of ECMA-262 6th Edition, The ECMAScript 2015 Language Specification.
ES7
ECMA-262
7ᵗʰ Edition / June 2016
ECMAScript® 2016 Language Specification
This Ecma Standard defines the ECMAScript 2016 Language. It is the seventh edition of the ECMAScript Language Specification.
ES5 とか 6 は 5th Edition のようにエディションのことです
なので今後も 8, 9, 10 と増えていくはず
でもこれまでは 大きな機能や構文の追加があってから新しいバージョンになっていましたが 今後というか ES2015 からは毎年リリースになりました
タイミングは今年と同じ流れで 1 月末頃に締め切りがあってそのタイミングで完了してる機能が 6 月に文書化されて正式リリースです
6 月には ECMA という ECMAScript 作ってるところの General Assembly という会議があるので そこで最終承認されてからリリースになるようです
これまでからすると 会議のあとすぐみたいですね
来年は 6 月の 13, 14 日 (日本時間だと 1日後)らしいので来年も同じ頃に ECMAScript 2017 がリリースされるはずです
1 年ごとにリリースになりましたが 次の新機能や 提案されてる機能が正式な仕様に確定するまであとどれくらいかの目安は TC39 のリポジトリで確認できます
TC39 が ECMA の中で ECMAScript を担当してるところです
TC は technical committee の略
ここにある Stage が機能の提案 (Proposal) に対する完了までの進み具合です
0 から始まって 4 まであります
5 段階です
4 になれば完了なので来年の頭の ES2017 の締め切りまでに 4 になったら それは ES2017 の新機能ということです
0 は誰でも書ける「こんなの欲しいー」くらいなものなので 別ページにまとめられています
1,2,3 と進んで 3 までくれば仕様はもう完成していて ブラウザの実装待ちやテスト待ちだったりするので 使えるようになるものはほぼ決まってると言っても良いような段階なのでサンプルコード見て こんなの入るんだー と眺めてると良いと思います
1 や 2 だとまだ仕様が変わったり なくなったりの可能性もあるので 使えるようになったら良いなーくらいの気分で眺めてるのがいいかもしれません
最終の 4 になるには 2 つの実装でテストに通る必要があるようです
たいてい Firefox と Chrome だと思うのでこのブラウザの新機能の実装の進み具合を見てると良さそうです
4 になったのは完了済みとしてまた別のページにまとめられています
0 ~ 4 のそれぞれがどんな意味かの詳しくはここ
英文が多いです
日本語版も探せば誰かが公開してると思います
あと ここに TC39 の会議のメモが置いてるようです
英語が辛いので私は読むの諦めましたが JavaScript の新しい情報を仕入れたい人には役立ちそうです
CSS も CSS3 から似た感じでモジュール単位で仕様決めて勧告ってことになってますし 機能ごとにリリースしていってくれたほうがいっき増えるよりは使う方も楽です
一度覚えたら数年は新しいことしなくていい方が良いって人には辛いですけどね