ECMAScriptはEcma Internationalによって標準化された仕様です。ECMAScript6は2015年に採用されたため、ES2015やES6などと省略されて呼ばれています。ここではES6で特筆すべき機能を紹介します。
Node.jsではES6の仕様がサポートされていますので、積極的に使って行きたいものです。クライアントJavaScriptはIEが未対応ですので注意が必要です。
ECMAScript6対応状況
letについて
ブロックスコープは通常のJavaScriptではその概念がありません。けれどもES6ではブロックスコープが利用可能となっています。
ブロックスコープの変数宣言はlet命令を使います。
let命令の例
if(true){ let num = 5; console.log(num); //5 } console.log(num); //error
*letは変数の巻き上げが起こりませんので注意してください。
constについて
定数はJavaScriptには存在しませんでしたが、ES6で使用可能となりました。
定数は一度宣言して値を代入したら、再び代入はできません。その時点でエラーになります。
const num = 5; num = 8; //エラー
アロー関数
アロー関数は無名関数をより簡単に記述するものです。
(仮引数) => {
命令文
}
例
let myName = (name) => { console.log(name); } myName('Tahara');
引数が1つの場合は()を省略したり、処理が1行なら{}を省略することもできます。
let myName = name => console.log(name);
テンプレート文字列
文字列に変数を埋め込む場合JavaScriptでは + で繋げます。結構面倒なのですが、ES6の新しい構文で、${}を使った文字列連結が行えます。
文字列リテラルをバッククォートで囲んでいることに注意してください。
参考例
var myName = 'Tahara'; console.log(`私の名前は${myName}です。`);
クラスの定義
JavaScriptにはクラスの概念がありません。ES6でようやく本物のクラスを使えるようになりました。
関数宣言は巻き上げされるのに対し、クラス宣言ではされないことです。クラスにアクセスする前に、そのクラスを宣言する必要があります。
コンストラクタは、クラスによって定義されるオブジェクトの生成時に、初期化を行う特別なメソッドです。
クラスの定義の例
class Animal{ constructor(name) { this.name = name; } set name(name){ this._name = name; } get name(){ return this._name; } getName(){ console.log(`種類は${this.name}です。`) } } let dog = new Animal('芝犬'); dog.getName();