Javascript:省略了嵌套For循环内部的初始化
正如我们所知,我们可以省略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
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在第一次运行时碰到了计数器,所以它在第二次运行时不会再次运行。谢谢你的解释@亨特,魏,没问题!如果你愿意,你可以接受这个正确的答案,让其他人知道它是正确的。(如果需要,请向上投票)