let がブロックを作ってくれない?
var o = {}; for each (let val in ["a","b","c"]) { o.__defineGetter__(val, function (){ return val; }); }
結果
o.a; // "c" o.b: // "c" o.c; // "c"
になってしまう。letで書いているからいけると思ったのに。
var o = {}; for each (let val in ["a","b","c"]) { let value = val; o.__defineGetter__(value, function (){ return value; }); }
なら意図通りに"a","b","c"が得られる。
などとTwitterで呟いたら
と助け舟が。バグみたい。仕様みたい。詳しくはコメント欄参照で
見事にはめられた。