我在函數內部循環的變量:循環中的變量 - 如何修復它在我的情況?
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