Javascript 闭包和 for 循环

标签 javascript

下面的代码返回: 10 10 10 10 10 10 10....

如何产生以下输出? 0 1 2 3 4 5 6 7 8 9

这是我的代码:

function go() {
    var procedures = [];

    for (var i = 0; i < 10; i++) {
      procedures[procedures.length] = function () {
        alert("You are now " + i + " years old");
      };
    }

    run_procs(procedures);
}

function run_procs(procs) {
    for (var i = 0; i < procs.length; i++) {
        procs[i]();
    }
}

go();

请指导我,谢谢...

最佳答案

将其包装在自执行的匿名函数中

for (var i = 0; i < 10; i++) {
    (function (i) {
        procedures[procedures.length] = function () {
            alert("You are now " + i + " years old");
        }
    })(i);
}

关于Javascript 闭包和 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29895263/

相关文章:

javascript - 是否有可能让 child 超出 parent 的溢出限制?

javascript - JQuery:窗口调整大小的更改宽度始终变为 0

javascript - 为什么 $.each 仅显示我的 Mustache 模板之一?

javascript - ReactJS - FCM 在 safari 浏览器中不工作

javascript - 'separate domain sandboxing'(防止 JS cookie 劫持)是否仍然适用于子域?

javascript - 如何从异步调用返回响应?

javascript - 揭示和延迟加载

javascript - hasClass() 函数未检测到——前面的函数将不会运行

Javascript - 动态改变元素的宽度

javascript - 列出可用 JavaScript 事件的引用?