javascript - 循环 JS 变量在函数内不显示正确的值

标签 javascript jquery jquery-mobile cordova

我需要执行以下任务。但这总是只提醒“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/

相关文章:

javascript - 为什么我的生成器在迭代后变空了?

javascript - FileReader onload 不在 Controller 范围内 Angular 2

javascript - 如何调整选项卡容器中的 div 位置?

html - jQuery Mobile 中的标签宽度

jquery-mobile - 垂直滚动导致滑动

java - 生成类似于一种颜色的可区分颜色

javascript - Uglify 不允许我使用变量作为键

javascript - 如果 margin-left = -3200 则禁用按钮

javascript - 如何在 Agility.js 中获取模型的实时更新

javascript - define是不是定义了jquery.mobile.custom.js?