今回は「ECMAScript2016 (ES7)」についてまとめます。
ECMAScript 2016 (ES7) ではあまり機能追加されず、以下の2点だけ追加されたようです。 といっても、どちらも利用シーンは多そうな機能なのでぜひ覚えておきたいものです。
Array.prototype.includes()
今まで配列要素に指定した要素が含まれているかどうかを調べようとすると .indexOf()
の戻り値が 0以上 であることを確認していました。
これだとコードで意味が分かりづらいので .includes()
で読みやすくしようといった流れです。
構文
arr.includes(search [, fromIndex])
配列arr
中に 指定された要素 search
が含まれている場合、 true
を返します。
それ以外の場合、 false
を返します。
fromIndex
を指定した場合、そのインデックス以降の要素に対してマッチする要素があるかどうかを返します。
サンプルコード
1 2 3 4 5 6 | var arr = [ "a" , "b" , "c" ]; console.log(arr.includes( "b" )); // -> true console.log(arr.includes( "d" )); // -> false arr[arr.length] = NaN console.log(arr.includes(NaN)); // -> true |
指数演算子
一般的な言語には「指数演算」の演算子が定義されていますが、なぜいか JavaScript には存在しませんでした。
(一応、 Math.pow()
はありましたが、演算子(オペレーター)としては存在しませんでした。そこまで使われる言語ではなかった??)
ECMAScript2016 (ES7) から ** 演算子
で指数計算ができるようになりました。
あわせて指数演算の算術演算を伴う代入演算( **=
)もできるようになっているのはポイントです。
構文
a ** b
上記の計算であれば「a
の b
乗」を計算できます。
a
が底で、b
が指数です。
サンプルコード
1 2 3 4 5 6 | console.log(arr.includes( "d" )); // -> false console.log(2 ** 4); // -> 16 var a = 2, b = 8; a **= b; // a = a ** b console.log(a); // -> 256 |
対応状況
2018年10月現在で利用できるのは IE11 以外のブラウザ、Node.js は ver 8 以上で使えるようです。 基本的にはどの環境でも使えると思っていい状況になっています。
コンパイラ | ブラウザ | ランタイム | |||||
---|---|---|---|---|---|---|---|
Babel 7 | Closure 2018.09 | IE 11 | Edge 18 | Firefox 62 | Chrome 69 | Safari 12 | Node.js 8 |
OK | OK | NG | OK | OK | OK | OK | OK |
今回は「ECMAScript2016 (ES7)」についてまとめました。 参考になったでしょうか? 本記事がお役に立っていると嬉しいです!!
参考記事
- GitHub - tc39 / Array.prototype.includes
- GitHub - rwaldron/exponentiation-operator
- ECMAScript compatibility table - 2016 plus
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!