用于循环奇怪行为的Javascript

用于循环奇怪行为的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

您好,我在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]);
        }

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)