はじめに
今回ですが個人的にES7以降の新機能や構文で追えていない知識がありましたので、自分用のメモとして記述します。今更感も否めないですがそこはご了承くださいませ🙇♂️
また、今回はES7のみですが、次回以降でES8以降の機能も順番に書いていきたいと思います。
そもそもECMAScriptって?
最初ですので簡単にECMAScriptに触れておきます。
ECMAScriptは、European Computer Manufacturer Associationの略称で、Ecma Internationalによって標準化されたJavaScriptを実装する上での仕様です。ES6(ECMAScript 2015)以降は、毎年6月に公開され、正式な仕様となっております。
- ECMAScriptのバージョン(ES6以降)
バージョン | 略称(通称) | 公開日 |
---|---|---|
ECMAScript 2015 | ES2015(別名ES6) | 2015年6月 |
ECMAScript 2016 | ES2016(別名ES7) | 2016年6月 |
ECMAScript 2017 | ES2017(別名ES8) | 2017年6月 |
ECMAScript 2018 | ES2018(別名ES9) | 2018年6月 |
ECMAScript 2019 | ES2019(別名ES10) | 2019年6月 |
ECMAScript 2020 | ES2020(別名ES11) | 2020年6月 |
ES2016(ES7) の新機能
では、早速本題に入ります。
ES7で追加された新機能は主に下記の2つです。
- Array.prototype.includes()メソッド
- べき乗演算子
・Array.prototype.includes()メソッド
まずはArray.prototype.includes()メソッドについてみていきます。
includes()は、配列内に特定の要素が含まれているかどうかを真偽値で返してくれるメソッドです。要素が含まれていればtrue、含まれていなければfalseとなります。
【例】
const array = ['要素1','要素2','要素3'];
console.log(array.includes('要素1')); // => true
また、includesメソッドは第2引数に配列内で探し始める位置をインデックスで指定することができます。(下記参照)
【構文】
arr.includes(valueToFind[, fromIndex])
【例1】
const array = ['要素1','要素2','要素3'];
console.log(array.includes('要素1', 3)); // => false
上記の例はインデックスに3を指定していますが、配列内の要素は3つ(インデックス番号が2まで)しかないのでfalseが返ります。
【例2】
const array = ['要素1','要素2','要素3'];
console.log(array.includes('要素3', -1)); // => true
また、上記の例はインデックスに負の数を指定すると、その絶対値の数だけ配列の末尾から戻った位置が検索開始地点となりますのでtrueが返ります。
・べき乗演算子
続いてべき乗演算子について記述します。
べき乗演算子は、1番目のオペランドを2番目のオペランドの累乗まで上げた結果を返す演算子です。簡単にいうと累乗計算ですね。こちらは例を見て頂いた方がわかりやすいかと思います。
【構文】
Operator: var1 ** var2
【例1】
console.log(2 ** 2); // => 4
console.log(2 ** 3); // => 8
console.log(1 ** -1); // => 1
console.log(NaN ** 1); // => NaN
NaNは、累乗してもNaNになります。
【例2】
console.log(2 ** 3 ** 2); // 512
console.log(2 ** (3 ** 2)); // 512
console.log((2 ** 3) ** 2); // 64
べき乗演算子は右結合的の為、a ** b ** c と a ** (b ** c) は等しいべき乗式となります。優先順位と異なる順に計算したい場合は、丸カッコを用いて計算順序を明示します。
はい、今回はここまでとさせて頂きます✍️
おわりに
ES7はES6に比べる新機能のボリュームは少ないですが、特にArray.prototype.includes()メソッドは個人的に実務で使える場面が多くありますので大変ありがたいメソッドです🙇♂️また、ES8については次回以降で書きます。