Javascript - 循环内循环

标签 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

}

首先 - 我知道还有其他方法可以解决这个问题。问题是,我想进一步了解循环,所以我选择了这个例子,请告诉我哪里错了。

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

这是我认为应该发生的事情

1) 首先i = 0,继续循环

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

3)当延迟循环结束时,重置小循环的s变量,这样当i = 1时它会再次自行运行;更大的循环将再次开始

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

5) 当 i = 2 时重复

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

最佳答案

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

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

}

当您记录处理时间时,您会发现数字几乎相同。

如果删除日志行,您可以更清楚地看到循环是相同的 +- 毫秒

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

}

浏览器将优化代码,因为作为开发人员和用户,您希望获得更快的代码。

如果你确实想要延迟,你需要使用 setTimeout 或 setInteral

var count = 0;
function round () {
    console.log(count);
    count++;
    if(count<3) {
        window.setTimeout(round, 2000);
    }
}
round();

关于Javascript - 循环内循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35207611/

相关文章:

javascript - 搜索并获取备份删除的元素

sql - MSSQL 中带删除表的双循环

c# - 变量声明的部分名称

php - 在 mysql 查询的 WHERE 子句中使用 php 变量

javascript - 在jqgrid中编辑行后无法显示成功消息

javascript - 从数组中过滤缺失值时获取错误值

javascript ES6 类/方法作用域

ios - 为什么数据多次添加到数组中?

excel - 如何在 Excel 中使用 VBA 遍历所有列

r - 如何将数据框列名插入方程式 R?