【发布时间】:2016-03-07 17:07:18
【问题描述】:
我在函数内部的循环中有一个变量:
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
});
}
console.log() 中的 currItem.id 每次 等于 items 中的最后一项。明显地。我试图通过这个来解决这个问题:
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
});
}
仍然没有成功。为什么以及如何解决?
【问题讨论】:
-
@Mario:错了;这正是你的问题。通过调用函数填充变量不会改变该变量的捕获方式。
-
是的,看来您没有正确应用修复程序...更容易使用
forEach -
@Mario:看看我链接的另一个副本,我在其中详细解释了 iife 的放置位置。这有帮助吗?
-
@SLaks,这就是我要问的:如何解决它?毕竟睁大眼睛。
标签: javascript