この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
ECMAScript 6の新機能を使ってみよう その2
この記事ではES6の構文を一部使ってみました。 引き続き新しい構文を使ってみます。
動作環境
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.9.4
- Node : v0.10.33
ここの記事に従いtraceur-compilerをインストールしておいてください。
ECMAScript 6の新機能をためしてみる
※traceurが実験的にサポートしてるものも含む
Destructuring Assignment
分配束縛の機能です。オブジェクトや配列に設定した値を使いやすくする機能です。 変数の値を入れ替えたり、プロパティの値を変数に分配したりするのが簡単にできます。
var a = "hello";
var b = "world";
//値の入れ替え
var [a, b] = [b, a];
console.log(a);
console.log(b);
var pt = {x: 10, y: 20};
//プロパティの値を各変数へ設定
var {x,y} = pt;
console.log(x);
console.log(y);
実行結果は次のとおり。
%traceur --experimental es6.js
world
hello
10
20
Generator Comprehension
Generator関数を、for-ofを使って配列を処理することができます。 for文の中で演算やif文でのフィルタも可能です。
var list = [1, 2, 3, 4];
var res = (for (x of list) x);
for (var x of res) {
console.log(x );
}
Numeric Literals
頭に0bをつけることで2進数、頭に0oをつけることで8進数を直接記述できるようになってます。
//2進数で3
console.log(0b11);
//8進数で9
console.log(0o11);
Property Method Assignment
オブジェクト内の関数を簡略化して記述できるようになりました。
var obj = {
name: "taro",
// greet: function() {}〜と書かなくてもOK
greet() {
return "hello," + this.name;
}
};
console.log(obj.greet());
Object Initializer Shorthand
オブジェクトの初期化も簡略化できるようになってます。 オブジェクト作成時にプロパティ名を指定しなければ、変数名がそのままプロパティ名になります。
var x = 10;
var y = 20;
var obj = {x,y};
console.log(obj);//{ x: 10, y: 20 }
Rest Parameters
ES6では可変長配列が扱えるようになりました。 ...を使って関数の引数に指定したり、配列を個々の要素として展開したりできます。
//可変長配列
function addChars(charArray, ...chars) {
charArray.push(...chars);
}
var charList = ['a', 'b', 'c'];
addChars(charList, 'd', 'e', 'f');
console.log(charList);//[ 'a', 'b', 'c', 'd', 'e', 'f' ]
/////////////////////////////////////
function say(name,greet) {
console.log(name + "," + greet); //taro,hello
}
//また、可変長配列を展開して渡すことも可能
var array = ["taro","hello"];
say(...array);
Template Literals
「`」(バッククオート)で文字列を囲うことで、文字列で変数を使用できます。 複数行の文字列を記述できたり、変数の計算も可能になってます。
//変数を使用
var name = 'world';
var message = `hello ${name}`;
console.log(message);
//複数行の文字列も記述可能
var multi = `foo,
bar,
buz`;
console.log(multi);
//変数の計算も可能
var total = 100;
console.log(`The total is ${total} (${total*1.08} with tax)`);
ES6の新構文第2弾でした。新しい構文はまだまだあるので、続きはまた次回。