javascript - for 循环内的递归函数未按预期工作

标签 javascript jquery node.js

我试图使用递归函数打印第一个数组元素,但输出不符合预期。

var modelArray = [1,2,3];
var refurbArray = [a,b];
for (var z = 0; z < modelArray.length; z++) {
    for (var y = 0; y < refurbArray.length; y++) {
        var check = modelArray[z];
        var recursive(refurbArray[y], function() {
            consol.log(check);
        });
    }
}

预期输出:

1
1
2
2
3
3

获得的输出:

3
3
3
3
3
3

最佳答案

您遇到的问题是recursive推迟了对回调函数的调用(可能是由于recursive内部的一些异步功能),并且当回调函数最终执行时,check发生了变化。

您需要在闭包中绑定(bind)check,对此有几个选项和编码风格如何执行,但示例如下

for (var z = 0; z < modelArray.length; z++) {
    for (var y = 0; y < refurbArray.length; y++) {
        (function() {
           var check = modelArray[z];
           recursive(refurbArray[y], function() {
               consol.log(check);
           });
        })();
    }
}

关于javascript - for 循环内的递归函数未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37052020/

相关文章:

javascript - 在常规 JavaScript 文件中导入 NodeJS 文件

javascript - 将上下文传递给 Handlebars 部分

javascript - 我无法正确使用光滑的 slider ,它没有显示任何类型的结果

jquery - 基于值的样式表行(jquery)

javascript - jQuery animate scrolltop on Opera 错误

node.js - 从azure blob下载excel文件并处理其数据,无需将文件保存到本地目录

javascript - 类型错误 : Error resolving module specifier

javascript - 如果单击一个项目,删除其他项目?

javascript - 通过使用项目名称查找最低值并使用 jquery 更改 html 表中的低值背景颜色

git - 可以从 node.js 脚本中压缩 git 提交吗?