您好在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]);
}
案例2:正常循环行为。
for(var i=0;i<array.length;i=i+2)
{
console.log(array[i]);
console.log(array[i+1]);
console.log(array[i+2]);
}
这两种语法都正确吗?什么可以产生无限循环? 从console.log(数组)中提取的数组 数组[&#34; Dieguez Jorge Alberto&#34;,&#34; Cel。:(02244)453125&#34;,&#34; jdieguez56@gmail.com" ]
答案 0 :(得分:1)
JavaScript(以及Java和许多其他语言)中的for
循环具有以下一般语法:
for (<loop variable; init>; <criteria check>; <change to loop variable>)
如果不确切,请原谅我。在你的第一个循环中:
for (var i=0; i < array.length; i+2)
你告诉JavaScript在每次循环迭代结束时计算i+2
。但是,您永远不会将此值分配回循环计数器i
。因此,循环继续无限迭代,i
具有零值。但是,在以下循环中:
for (var i=0; i < array.length; i=i+2)
您要将i+2
分配给i
。这意味着i
在循环的每次迭代期间增长2,并且当i
达到数组长度的大小时,循环最终将终止。
<强>更新强>
根据您的评论,您认为i + 2
会根据i++
这样做而增加和分配,而不使用显式的等号。但是,i++
实际上是i = i + 1
的简写,因此实际上正在进行分配。但是i + 2
不是一个赋值,它只是一个表达式,因此你的循环会永远存在。
答案 1 :(得分:0)
在第一个循环中,您不会重新分配变量i
。 i + 2
只是一个声明,永远不会改变i
的价值。
由于这个原因,永远不会遇到i < array.length
的循环退出条件,循环永远不会退出。
答案 2 :(得分:0)
在第一个循环中你没有重新分配变量i,如果你想它必须像这样
i + = 2等于i = i + 2
如果你只运行i + 2它的just语句而不是改变variabel i的值。所以我永远不会增加。也许你可以看到控制台只是打印静态但总是循环。因为我永远不会停止,因为我永远不会达到数组的长度。所以,你必须让我为for-loop打破。