javascript:在函数(){}中使用当前的for循环计数器值?

Fab*_*itz 4 javascript scope for-loop copy anonymous-function

在我想要这样做的网站上:(简化)

myHandlers = new Array();
for(var i = 0; i < 7; i++) {
  myHandlers.push(new Handler({
    handlerName: 'myHandler'+i, // works, e.g. ->myHandler1, 2, 3 etc.
    handlerFunc: function(bla) { /*...*/ alert(i); } // doesn't work,all return 7
  }
}
Run Code Online (Sandbox Code Playgroud)

我可以将计数器设置为我的处理程序的另一个属性(它将复制当前值)并在我的函数中使用它,但我想,还有一种方法可以实际复制此值,不是吗?

Gum*_*mbo 6

handlerFunc被调用时,i在函数内部指i的的for循环.但这i可能不再具有相同的价值.

使用闭包来绑定i匿名函数范围内的当前值:

handlerFunc: (function(i) { return function(bla) { /*...*/ alert(i); }; })(i)
Run Code Online (Sandbox Code Playgroud)

这里使用匿名函数(function(i) { … })(i)并立即调用.该功能结合的价值i的中for环至本地i.这i是然后从独立i的的for循环.