为什么这个For循环会使浏览器实验室崩溃
Why does this For loop crash the browser lab?
这可能是一个愚蠢的问题,但为什么这个简单的循环会崩溃?
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
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- 有时数据是't显示在浏览器中
- 使图像在单击时展开到不大于浏览器
- fetch() 函数未在 Ubuntu Chromium 浏览器上定义
- 不同浏览器中的空白字符正则表达式行为
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- Windows形成web浏览器控件和Javascript更改的DOM
- 如何临时暂停浏览器渲染,然后恢复整个页面
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 谷歌地图API v3不适用于移动浏览器或PhoneGap
- 禁用(而不是隐藏)浏览器滚动条
- jquery代码在Mozilla中有效,但在其他浏览器上无效
- 如何使用modalDialog来显示可以在所有浏览器中工作的弹出窗口
- 当浏览器上的后退按钮到达主页时,我需要删除Class
- 是否可以在浏览器中使用纯JavaScript保存音频流
- jQuery检测浏览器是否支持Zoom
- 为什么这个For循环会使浏览器实验室崩溃