Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个For循环会使浏览器实验室崩溃?_Javascript_Jquery - Fatal编程技术网

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

Javascript 为什么这个For循环会使浏览器实验室崩溃?,javascript,jquery,Javascript,Jquery,可能是个愚蠢的问题,但为什么这个简单的循环会崩溃呢 HTML: JS: var array = ["1", "2", "3", "4"]; for(var x = 0; x = array.length; x++) { $("p").html(array[x]); } 示例Fiddle.因为x=array.length不是一个“真实”条件,并且等式在迭代中没有任何意义 试试这个: for(var x = 0; x < array.length; x++) {

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

HTML:

JS:

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

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

示例Fiddle.

因为
x=array.length
不是一个“真实”条件,并且等式在迭代中没有任何意义

试试这个:

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
for(var x=0;x
因为
x=array.length
不是一个“真实”条件,并且等式在迭代中没有任何意义

试试这个:

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
for(var x=0;x
只要数组中有键,您的条件就会为真,就像一个while循环

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

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
var数组=[“1”、“2”、“3”、“4”];
对于(var x=0;x

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

只要数组有键,您的条件将为true,就像while循环一样

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

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
var数组=[“1”、“2”、“3”、“4”];
对于(var x=0;x

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

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

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

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

x = array.length 
它返回x的值,不等于0',false,undefined或null,因此此条件始终为正值


循环继续反复迭代,始终为x指定相同的值,这将产生无限循环。

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

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

x = array.length 
它返回x的值,不等于0',false,undefined或null,因此此条件始终为正值

循环将继续反复迭代,始终为x指定相同的值,这将执行无限循环。

您得到两个错误:

首先,您不测试条件<代码>x=数组长度是属性而不是比较。您正在将array.length与x进行对接,而不是进行比较。正确的比较声明将是:

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

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
第二,即使是比较,它也会超过数组长度,因为数组索引是基于零的

因此,正确的答案是:

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

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
var数组=[“1”、“2”、“3”、“4”];
对于(var x=0;x
您有两个错误:

首先,您不测试条件<代码>x=数组长度是属性而不是比较。您正在将array.length与x进行对接,而不是进行比较。正确的比较声明将是:

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

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
第二,即使是比较,它也会超过数组长度,因为数组索引是基于零的

因此,正确的答案是:

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

for(var x = 0; x < array.length; x++) {
        $("p").html(array[x]);
}
var数组=[“1”、“2”、“3”、“4”];
对于(var x=0;x
因为循环从未停止过,所以执行的是x=array.length而不是x==array.length。即使这样,它也应该是x==array.length-1或
x
,这可能是您在给定循环内容的情况下想要的。您并没有破坏浏览器,只是用一个无限循环将其挂起。正如您已经证明的,我已经忘记了如何进行循环。你的第二句话是错的。只有在最后一次迭代中才是这样,因为循环从未停止过,所以您正在执行x=array.length而不是x==array.length。即使这样,它也应该是x==array.length-1或
x
,这可能是您在给定循环内容的情况下想要的。您并没有破坏浏览器,只是用一个无限循环将其挂起。正如您已经证明的,我已经忘记了如何进行循环。你的第二句话是错的。只有在最后一次迭代中才会出现这种情况。如果您执行
x!=array.length
,但不要这样做。@4castle这是不平等的。您应该提到它无限循环的原因是因为
4
是一个真实的值
x=array.length
赋值,但也返回
4
。如果执行
x!=array.length
,但不要这样做。@4castle这是不平等的。您应该提到它无限循环的原因是因为
4
是一个真实的值
x=array.length
赋值,但也返回
4
。这并不能回答问题。它更适合作为评论,但在这种情况下,评论已经发表了。这并不能回答问题。它更适合作为评论,但在这种情况下,评论已经发表了。