的Javascript:略初始化嵌套For循环内
我们知道,我们可以省略内部的for循环的初始化:的Javascript:略初始化嵌套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新手。
循环运行多次,但在第一次运行i
之后,'j'已经是10,所以第二个循环不再在i
的下一个值期间运行。
如果你会写这样的东西。
for(; i < 10; i++) {
for(; j < 10; j++) {
console.log("test")
}
console.log("another test")
}
您会看到两条消息都打印了10次。
你的“j”循环只运行“十次一次”的原因是因为在运行10次后你不会将J置回零。因此,如果i
第一次运行后,则对于每个循环,语句j < 10
都是正确的。
你可以通过循环设定j = 0
第一内解决这个问题(如果你不想把它放在第二循环的变量初始化内。)
for(; i < 10; i++) {
j = 0;
for(; j < 10; j++) {
console.log("test")
}
console.log("another test")
}
啊哈!看起来我已经做了一些简单的编程错误。 outner循环实际上是运行的,只是变量j在第一次运行时触发了计数器,所以它不会再次运行。感谢您的解释=)! –
@Hunter.Wei没问题!如果你愿意,你可以接受这个答案是正确的,让其他人知道它是正确的。 (并且如果你愿意,upvote) –
每次i
增量,您需要重置j
至0
。
如果你重写你的脚本,使每个变量被初始化内的for loop
声明本身,那么每次i
增量,j
将被重置为0
。
for (var i = 0; i < 10; i++) {
for (var j = 0; j < 10; j++) {
}
}
OP知道这一点,他问了一个关于当我们忽略for循环内初始化时会发生什么的问题。 :-) –
我认为你的回答比较好,@DylanMeeus和我已经提高了你的答案。但我不相信OP知道_“每次'i'增加时,都需要将'j'重置为'0'。” - - 因为它正是不知道这个(或者看到它)导致OP问他们的问题。 – Rounin
我认为他这么做,考虑到标题说(忽略初始化)和第一句话。但感谢您的满意!如果他的确不*知道这个,你的回答就是正确的答案! –
当您在两个循环之外初始化j = 0时。 然后,对于i = 0,内循环将运行,然后j的值为10; 之后,该值从未初始化为0,这是您在第二种情况下所做的。 由于内循环只运行一次(仅在i = 0时) – 2016-07-15 09:50:54