Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.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:省略了嵌套For循环内部的初始化_Javascript_For Loop - Fatal编程技术网

Javascript:省略了嵌套For循环内部的初始化

Javascript:省略了嵌套For循环内部的初始化,javascript,for-loop,Javascript,For Loop,正如我们所知,我们可以省略for循环中的初始化: var i = 0; for(; i < 10; i++) { // do Something with i } var i=0; 对于(;i

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

var i = 0;
for(; i < 10; i++) {
  // do Something with i
} 
var i=0;
对于(;i<10;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=0;
对于(;i<10;i++){
对于(;j<10;j++){
//只对j做点什么
//outner循环只运行一次
}
}
解决方案:

 var i = 0;
 var j;
 for(; i < 10; i++) {
   j = 0;
   for(; j < 10; j++) {
      // everything is fine!
   }
 }
var i=0;
var j;
对于(;i<10;i++){
j=0;
对于(;j<10;j++){
//一切都很好!
}
}

有人能解释发生了什么事吗?我是Javascript的新手

循环运行多次,但在第一次运行
i
之后,您的“j”已经是10,因此第二个循环在
i
的下一个值期间不再运行

如果你想写这样的东西

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

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

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

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

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

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

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

}
for(变量i=0;i<10;i++){
对于(var j=0;j<10;j++){
}
}

在两个循环之外初始化j=0时。然后,对于i=0,将运行内部循环,然后j的值为10;在此之后,该值永远不会初始化为0,这是在第二种情况下所做的。由于内部循环只运行一次。(只有当i=0时)OP知道这一点,他问了一个问题,当我们忽略for循环中的初始化时会发生什么情况。:-)我认为你的答案更好,@DylanMeeus和我已经对你的答案投了赞成票。但我不相信OP知道“每次
I
增加时,你都需要将
j
重置为
0
”——因为正是不知道(或看到)这一点导致OP问他们的问题。考虑到标题说明(省略了首字母)和第一句话,我认为他知道。但是谢谢你的投票!如果他不知道,你的答案是正确的!啊哈!看起来我犯了一些简单的编程错误。outner循环实际上是运行的,只是变量j在第一次运行时碰到了计数器,所以它在第二次运行时不会再次运行。谢谢你的解释@亨特,魏,没问题!如果你愿意,你可以接受这个正确的答案,让其他人知道它是正确的。(如果需要,请向上投票)