destructuring assignment
my ($foo, $bar) = (0, 1);
と書いていたのでそんなに凄いこととは思ってなかったんだけど、これは分割代入といってだな… ( https://developer.mozilla.org/ja/New_in_JavaScript_1.7#.e5.88.86.e5.89.b2.e4.bb.a3.e5.85.a5 ) 、的に説明されるとちょっといい感じに見えてくるから不思議。とりあえず以下のような書き方
// swap [a, b] = [b, a]; // multiple return function foo() { return [0, 1]; } let [zero, one] = foo();
が嬉しかったり、 prototype を拡張してもそれを無視してくれる以下の書き方がうれしいということでいいかな。
function StyleSheet(){} StyleSheet.prototype = { toString: function () { var temp = []; // toString をはじく判定をしなくていいのがうれしい for(let [property, value] in Iterator(this)) { temp.push(property.replace(/_/g, '-') + ':' + value); } return temp.join(';') + (temp.length > 0 ? ';' : ''); }, }; // test code var css = new StyleSheet; css.font_size = '12px'; css._moz_transparency = 0.7; css.content = '"ゆっくりしていってね !!"'; alert(css); alert((css == 'font-size:12px;-moz-transparency:0.7;content:"ゆっくりしていってね !!";') ? 'ok' : 'ng');
ECMAScript 4 draft ( http://www.ecmascript.org/es4/spec/overview.pdf ) によると配列だけじゃなくてオブジェクトに対しても以下のようにかけるようにすると書いてあるんだけどこれはどうなんだろう。正直わかりにくい気がするけど慣れれば便利なんだろうか。
// x = 1024, y = 768 let {x, y} = {x: 1024, y: 768}; // a = 24, b = 24 let {x: a, y: b} = {x: 24, y: 24};