【问题标题】:Javascript for loop skips over function call [duplicate]Javascript for循环跳过函数调用[重复]
【发布时间】:2023-03-08 17:15:01
【问题描述】:

所以问题是,当我运行我的程序时,日志如下所示:screenshot

从屏幕截图中可以看出,update()(第 63 行)在整个程序执行后最后运行。另外,如果我在更新函数中尝试console.log(threeTowers),它不会记录数组的当前状态,而是记录它的最终状态。

例如(顺便说一句,这是一座河内求解器塔): 它将控制台记录 [] [1,2,3] [] 所有七次 for 循环执行的时间,当它应该完成时:[1,2,3] [] [] ... [2,3] [1] [] ... ETC

代码如下:

for (i = 0; i < minMoves; i++) {

console.log("a: " + threeTowers[0]);
console.log("b: " + threeTowers[1]);
console.log("c: " + threeTowers[2]);
console.log(" ");
update(threeTowers[0], threeTowers[1], threeTowers[2]);

if(even){
    switch(x){
        case 1:
            AtoC();
            x=2;
            continue;
            break;
        case 2:
            AtoB();
            x=3;
            continue;
            break;
        case 3:
            BtoC();
            x=1;
            continue;
            break;
    }
}else{
    switch(x){
        case 1:
            AtoB();
            x=2;
            continue;
            break;
        case 2:
            AtoC();
            x=3;
            continue;
            break;
        case 3:
            BtoC();
            x=1;
            continue;
            break;
    }
}


}

function update(a, b, c){
    (function(index) {
    setTimeout(function() { 
        console.log(a);
        towerB.innerHTML = b;
        towerC.innerHTML = c;
    }, index*500);

})(i);
}

如果我需要添加任何其余代码以使其更清晰,请告诉我,并提前感谢您的帮助!

【问题讨论】:

  • 从不switch 中使用continue continue 用于whiledo...whileforfor...in

标签: javascript arrays function for-loop


【解决方案1】:

当记录数组时,你给控制台只是对对象的引用。一旦你的程序终止给你最终结果,表达式就会被计算。

尝试打印 rhe 实例的字符串化版本。

console.log(JSON.stringify(Towers));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2015-05-17
    • 1970-01-01
    • 2012-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多