为什么For循环会使浏览器实验室崩溃?

时间:2016-05-13 17:43:20

标签: javascript jquery

可能是一个愚蠢的问题,但为什么这个简单的循环会崩溃?

HTML:

<p></p>

JS:

var array = ["1", "2", "3", "4"];

for(var x = 0; x = array.length; x++) {
        $("p").html(array[x]);
}

示例小提琴keypress event

5 个答案:

答案 0 :(得分:4)

因为x = array.length不是“真正的”条件,所以无论如何,相等在迭代中没有意义。

试试这个:

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}

答案 1 :(得分:1)

你有2个错误:

1,你不测试病情。 x = array.length;归因而不是比较。您将array.length归因于x而不是比较它们。相关比较陈述将是:

x == array.length;

和第二,即使它是一个比较,它也会超过数组长度,因为数组索引它是从零开始的。

所以正确的是:

var array = ["1", "2", "3", "4"];

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}

答案 2 :(得分:0)

如果您的数组有关键,那么您的条件将是真实的,就像一个while循环。

var array = ["1", "2", "3", "4"];

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}

这将停在最后一个元素上。

答案 3 :(得分:0)

你的循环基于x,用0初始化。

通过执行以下命令评估循环条件:

x = array.length 

返回x的值,不等于0,&#39;&#39;,false,undefined或null,因此这个条件总是为正。

循环继续迭代,一遍又一遍,总是为x分配相同的值,这会产生无限循环。

答案 4 :(得分:-1)

尝试使用x < array.length代替x = array.length