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

时间:2016-07-15 09:47:42

标签: javascript for-loop

我们知道,我们可以省略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中的新手。

2 个答案:

答案 0 :(得分:1)

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

如果你写这样的话。

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

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

你&#34; j&#34;循环,只运行一次&#34;十次&#34;,是因为在运行10次后你没有将J设置回零。因此,对于第一次运行后j < 10的每个循环,语句i都是正确的。

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

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

答案 1 :(得分:-1)

每次i递增时,您需要将j重置为0

如果您重写脚本以便在 for loop语句本身内初始化每个变量,那么每次i递增时,j将重置为0

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

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

}