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

Why does this For loop crash the browser lab?

本文关键字:浏览器 实验室 崩溃 循环 For 为什么      更新时间:2023-09-26

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

HTML:

<p></p>

JS:

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

示例Fiddle在这里。

因为x = array.length不是"real"条件,并且等式在迭代中无论如何都没有意义。

试试这个:

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

您有两个错误:

首先,你没有测试条件。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]);
}

如果数组中有键,则条件将为true,就像while循环一样。

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

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

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

通过执行来评估循环条件

x = array.length 

它返回x的值,不等于0、"、false、undefined或null,因此此条件将始终为正。

循环继续迭代,一次又一次,总是给x分配相同的值,这就完成了一个无限循环。

尝试x < array.length而不是x = array.length