このコードがあるとしましょう
var callbacks = {};
for (var i in mylist){
callbacks[i] = { callback: function(){ myFunction( myList[i].someProperty ); }};
}
上記のコードは、次のようなリストになります。
myList[0].property = "zero";
myList[1].property = "one";
このような結果:
callbacks[0].callback // -> returns myFunction("one"); WRONG!
callbacks[1].callback // -> returns myFunction("one");
関数が実行されたときではなく、ループ中に値が割り当てられるようにするためにfor..in
(ループ内で、無名関数内にアクセスするという事実を変更せずに)できることはありますか?myList[i].someProperty
myList[i].someProperty