我试图使用递归函数打印第一个数组元素,但输出不符合预期。
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/