Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-循环中的循环_Javascript_Loops_Variables_For Loop - Fatal编程技术网

Javascript-循环中的循环

Javascript-循环中的循环,javascript,loops,variables,for-loop,Javascript,Loops,Variables,For Loop,我有以下代码: for (i = 0; i < 3; i++){ //big loop console.log("Start of round" + i) for (s = 0; s < 5000; s++){ //small loop aka delay loop console.log("End of round" + i); } s = 0; //reset } (i=0;i

我有以下代码:

 for (i = 0; i < 3; i++){ //big loop
    console.log("Start of round" + i)
    for (s = 0; s < 5000; s++){ //small loop aka delay loop
        console.log("End of round" + i);
    }
    s = 0; //reset

}
(i=0;i<3;i++){//大循环的

console.log(“第一轮开始”+i)
对于(s=0;s<5000;s++){//小循环又称延迟循环
控制台日志(“回合结束”+i);
}
s=0;//重置
}
首先,我知道还有其他方法可以解决这个问题。问题是,我试图进一步了解循环,所以我选择了这个例子,请告诉我哪里错了

所以我有一个循环,它应该自己运行3次。每次它自己运行时,都会有一个循环被认为会延迟进程。 问题是,延迟在第二次和第三次停止发生

以下是我认为应该发生的事情

1) 第一个i=0,继续循环

2) 延迟进一步进行内部循环

3) 延迟循环结束后,重置小循环的s var,使其在i=1时再次运行;更大的循环将再次开始

4) 当i=1时,大循环再次开始;所以继续,再次运行延迟循环,因为我们上次重置了var s

5) 当i=2时重复


我在这里错过了什么?我想更深入地了解javascript循环。谢谢。

首先,您不需要使用循环作为延迟,您可以使用:

setTimeout(functionReference, timeOutMillis);

第二:您不需要重置s。当您进入第二个循环时,它将自动设置为0。

首先,您不需要使用循环作为延迟,而是可以使用:

setTimeout(functionReference, timeOutMillis);

第二:您不需要重置s。当您进入第二个循环时,它将自动设置为0。

我认为您这样做是因为在JavaScript中,线程不存在,您的代码实际上可以在我的浏览器上运行,tw您不需要
s=0
因为
for
语句,所以请为您执行此操作

for (i = 0; i < 3; i++){ //big loop
    console.log("Start of round" + i)
    for (s = 0; s < 5000; s++){ //small loop aka delay loop
        console.log("End of round" + i);
    }

}

把你的日志放进一个函数中并运行它,这是一种使用“线程”而不是“线程”的方法(因为它的工作原理不同)

我认为你这样做是因为在JavaScript中,线程不存在,你的代码实际上在我的浏览器上工作,tw你不需要
s=0
因为
for
语句,所以请为您执行此操作

for (i = 0; i < 3; i++){ //big loop
    console.log("Start of round" + i)
    for (s = 0; s < 5000; s++){ //small loop aka delay loop
        console.log("End of round" + i);
    }

}

将日志放入函数并运行它,这是一种使用“线程”而不是“线程”的方法(因为它的工作方式与线程不同)

延迟没有真正的区别,您所看到的只是控制台在for循环中努力快速更新

(i=0;i<3;i++){//大循环的

控制台日志(“回合开始”+i);
时间(i),;
对于(s=0;s<5000;s++){//小循环又称延迟循环
控制台日志(“回合结束”+i);
}
控制台。时间结束(i);

}
延迟没有真正的区别,您所看到的只是控制台在for循环中努力快速更新

(i=0;i<3;i++){//大循环的

控制台日志(“回合开始”+i);
时间(i),;
对于(s=0;s<5000;s++){//小循环又称延迟循环
控制台日志(“回合结束”+i);
}
控制台。时间结束(i);

}
循环不会产生延迟。。。如果您想要明显的时间延迟,则使用错误的技术。嵌套循环不会产生延迟,只会产生较低的性能您不需要重置
s=0
,它将发生在每个主迭代上。对于延迟,您可以使用setTimeout,另请参阅相关讨论
console.log(“回合结束”+i)可能应该是外部循环中的最后一行循环不会产生延迟。。。如果您想要明显的时间延迟,则使用错误的技术。嵌套循环不会产生延迟,只会产生较低的性能您不需要重置
s=0
,它将发生在每个主迭代上。对于延迟,您可以使用setTimeout,另请参阅相关讨论
console.log(“回合结束”+i)
可能是外循环中的最后一行我已经知道setTimeout-这是我在尝试循环选项后的第二次尝试。虽然-我很好奇为什么延迟只发生一次,而不是在接下来的两次中。因为代码的处理速度不是恒定的。RE Second:因为没有使用
var
,所以变量是全局变量。因此重置。我已经知道setTimeout-这是我在尝试循环选项后的第二次尝试。虽然-我很好奇为什么延迟只发生一次,而不是在接下来的两次中。因为代码的处理速度不是恒定的。RE Second:因为没有使用
var
,所以变量是全局变量。因此重置。是的,我刚刚意识到这一点。这个循环飞得太快了,所有的控制台日志都在心跳中结束了。是的,我刚刚意识到这一点。这个循环飞得太快了,所有的控制台日志都在心跳内结束了。