用于循环奇怪行为的Javascript
您好,我在mozilla firefox 53.0中使用javascript,在for循环中发现了这个问题 案例1:对于sintaxis,会导致无限循环和浏览器崩溃用于循环奇怪行为的Javascript,javascript,for-loop,firefox,Javascript,For Loop,Firefox,您好,我在mozilla firefox 53.0中使用javascript,在for循环中发现了这个问题 案例1:对于sintaxis,会导致无限循环和浏览器崩溃 for(var i=0;i<array.length;i+2) { console.log(array[i]); console.log(array[i+1]); console.log(array[i+2]); } f
for(var i=0;i<array.length;i+2)
{
console.log(array[i]);
console.log(array[i+1]);
console.log(array[i+2]);
}
for(var i=0;i在第一个循环中,您没有重新分配变量i
i+2
只是一个语句,从不更改i
的值
因此,永远不会满足i
的循环退出条件,也永远不会退出循环。JavaScript(以及Java和许多其他语言)中的循环的具有以下通用语法:
for (<loop variable; init>; <criteria check>; <change to loop variable>)
您正在将i+2
分配给i
。这意味着i
在循环的每次迭代中增长两倍,当i
达到数组长度时,循环将最终终止
更新:
根据您的评论,您似乎认为i+2
会递增并赋值,因为i++
会递增并赋值,而不使用明确的等号。然而,i++
实际上是i=i+1
的简写,所以这里实际上发生了赋值。但是i+2
不是赋值,它只是一个表达式,因此您的循环将永远继续。在第一个循环中,您没有重新分配变量i,如果您想,它必须是这样的
i+=2等于i=i+2
如果你只运行i+2它的just语句,不改变variabel i的值。所以我永远不会增加。也许你可以看到控制台只是打印静态的但总是循环。因为我永远不会停止,因为我从来没有达到数组的长度。所以,你必须使for循环的i中断。第一个循环会导致无限循环,就像最后一个p一样你只有i+2
,它不会更新变量i
,所以i
永远不会等于或高于array.length
是的,对于for(var i=0;iI理解,使用该语法,因为我总是使用for(var i=0;iI++
是I=I+1
的缩写,因此实际上有一个赋值发生在那里,它只是不明确。
for (<loop variable; init>; <criteria check>; <change to loop variable>)
for (var i=0; i < array.length; i+2)
for (var i=0; i < array.length; i=i+2)