【发布时间】: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中使用continuecontinue用于while、do...while、for和for...in
标签: javascript arrays function for-loop