Javascript : 省略 在嵌套 For 循环中初始化

Javascript : Omitted Initialize inside Nested For Loop

本文关键字:循环 初始化 For 嵌套 省略 Javascript      更新时间:2023-09-26

我们知道,我们可以省略 for 循环中的初始化:

var i = 0;
for(; i < 10; i++) {
  // do Something with i
} 

但是,我弄清楚是否也省略了嵌套循环中的初始化:

var i = 0;
var j = 0;
for(; i < 10; i++) {
  for(; j < 10; j++) {
     // only do Something with j
     // outner loop only run once
  }
}

溶液:

 var i = 0;
 var j;
 for(; i < 10; i++) {
   j = 0;
   for(; j < 10; j++) {
      // everything is fine!
   }
 }

谁能解释一下发生了什么?我是Javascript的新手。

循环

运行多次,但你的'j'在第一次运行i后已经是十,所以第二个循环在下一个值i期间不再运行。

如果你会写这样的东西。

  for(; i < 10; i++) {
     for(; j < 10; j++) {
           console.log("test")
      }  
      console.log("another test")
   }

您会看到两条消息都被打印了 10 次。

你的"j"循环只运行"十次一次"的原因是,在J运行了10次后,你没有将J设置回零。因此,如果在第一次运行后i,则语句 j < 10 对于每个循环都是正确的。

您可以通过在第一个 for 循环中设置j = 0来解决此问题(如果您不想将其放在第二个循环的变量初始化中)。

for(; i < 10; i++) {
    j = 0;
    for(; j < 10; j++) {
        console.log("test")
    }
    console.log("another test")
}

每次i增量时,都需要将j重置为 0

如果重写脚本,使每个变量在 for loop 语句本身初始化,则每次i增量时,j都将重置为 0

for (var i = 0; i < 10; i++) {
    for (var j = 0; j < 10; j++) {
    }
}