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();

