我需要执行以下任务。但这总是只提醒“5”而不是 1、2、3、4 和 5。我该如何解决这个问题?请帮忙。
for(var x=1; x<=5; x++){
something.load(function(result){
alert(x);
});
}
最佳答案
这是由于关闭。当回调运行时,它将警告处于当前状态的变量(因此在循环之后)。
要解决此问题,您可以创建一个新的闭包来保持变量状态。
for(var x=1; x<=5; x++){
(function(x) {
something.load(function(result){
alert(x);
});
}(x));
}
对于闭包更完整的解释,可以引用这个SO问题:How do JavaScript closures work?
或者 TC39(EcmaScript 标准体)成员的这篇文章 http://www.2ality.com/2013/05/quirk-closures.html
关于javascript - 循环 JS 变量在函数内不显示正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19302539/