[JavaScript] 最近知ったカンマ演算子(変数を利用してオブジェクトプロパティを処理したい)


本題

JS書いてて、オブジェクトのプロパティに変数を割り当てたいこと、よくありますよね。

CoffeeScriptでは以下のように書けます。

sample.coffee

$ "input"
  .each ->
    _key = $(@).attr "name"
    _val = $(@).val()
    _object = "#{_key}" : _val

コンパイルするとこうなります。

sample.js

$("input").each(function() {
  var _key, _object, _val, obj;
  _key = $(this).attr("name");
  _val = $(this).val();
  return _object = (
    obj = {},
    obj["" + _key] = _val,
    obj
  );
});

最初これをみたとき、なにやってんだろ?と思いましたが
ここで使われているのが、カンマ演算子でした。
パーフェクトJavaScriptにももちろん書いてありました。

参考文献はよく読めってことですね。

ついでに

ES6から、下のような記述が可能になるらしい。

es6.sample
var key = 'hoge';
var obj = { [key]: val };

オブジェクトリテラルのキーに式が使えるようになった