我怎样才能保留闭合循环内的参数?

我正在构build一个将在后面被调用的函数的数组,如下所示:

callbackArray = []; for(var i = 0; i < 5; i ++) { callbackArray.push(function() { console.log(i); }); } for(var i = 0; i < callbackArray.length; i ++) { // This will not preserve the value of i callbackArray[i](); } 

这将打印4,4,4,4,4。 但是我需要一种方法来保存我的值,以便它不保留相同的引用,但创build一个新的值的本地副本。 预期的结果应该是0,1,2,3,4。 这是显示问题的一个简单例子。 但是,variablesi应该是对象,数组,函数或原语。

我怎样才能做到这一点?

这可能有帮助

 var callbackArray = []; // create a function that returns a new function with "i" properly scoped var fn = function (i) { return function () { console.log(i); }; }; for(var i = 0; i < 5; i ++) { callbackArray.push(fn(i)); } callbackArray[1](); // output 1 callbackArray[4](); // output 4 callbackArray[0](); // output 0 

你也可以使用$ .proxy,如果你正在使用jQuery实现相同的效果

请参阅api文档的代理