我在函数内部循环的变量:循环中的变量 - 如何修复它在我的情况?
function myHandler() {
for (var i = 0; i < items.length; i++) {
var currItem = items[i];
myObj.doSomething(function(data) {
console.log("ok");
console.log("My currItem id: " + currItem.id); // the last one of all in items
}, function(e) {
console.log("error");
console.log("My currItem id: " + currItem.id); // the last one of all in items
});
}
currItem.id
每次中的console.log()是等于最后在项中的项的。明显。我试图解决这个问题:
function myHandler() {
for (var i = 0; i < items.length; i++) {
var currItem = items[i];
var currItem = (function(i2) {
return items[i2];
})(i);
myObj.doSomething(function(data) {
console.log("ok");
console.log("My currItem id: " + currItem.id); // the last one of all in items
}, function(e) {
console.log("error");
console.log("My currItem id: " + currItem.id); // the last one of all in items
});
}
而且仍然没有成功。为什么以及如何解决它?
@elclanrs,没有.. – Mario
@Mario:错误的;这正是你的问题。通过调用一个函数来填充一个变量并不会改变捕获该变量的方式。 – SLaks
是啊,看起来你没有正确地应用修复...更容易使用'forEach' – elclanrs