为什么i<array.length而不是i=array.length 当我最初编写代码时,我告诉 for 循环遍历数组的长度。我将 for 循环定义为(var i = 0; i=array.length; i++). 这创造了一个无限循环。修复它的方法是设置i<array.l,javascript"/>

首页 > 解决方案 > 为什么用我

为什么i<array.length而不是i=array.length 当我最初编写代码时,我告诉 for 循环遍历数组的长度。我将 for 循环定义为(var i = 0; i=array.length; i++). 这创造了一个无限循环。修复它的方法是设置i<array.l

问题描述

为什么i<array.length而不是i=array.length 当我最初编写代码时,我告诉 for 循环遍历数组的长度。我将 for 循环定义为(var i = 0; i=array.length; i++). 这创造了一个无限循环。修复它的方法是设置i<array.length. 但是,有人可以向我解释为什么吗?感觉好像循环应该继续到数组的末尾。如果我将它设置为小于数组的长度,我怎么知道它已经检查了所有的数字?

谢谢!

注意:这是我的代码。

var array = [3, 6, 2, 56, 32, 5, 89, 32];
var largest = 0;
for (var i = 0; i largest) {
  largest = array[i]
}
}
console.log(largest);


这是一个 VS 代码错误。我安装了 1.17,它运行良好https://code.visualstudio.com/updates/v1_17

标签: javascript

解决方案


因为

for (i = 0; i < array.length; i++)

方法:

i = 0我从 0 开始for-loop

i < array.length只要i小于array.length,我们就继续循环

i++在每个循环之后,我们将 i 增加 1(即 i = i + 1)

当您替换i < array.lengthi = array.length时,您是在说let i = array.length将值设置iarray.length。只要语句为真,它将继续循环。这就是为什么它是一个无限循环。

但我想那是一个错字,你的意思是i == array.length。仍然不起作用,因为所有数组都以索引 0 开头(这就是i = 0开始的原因)。这意味着它们在索引处结束array.length - 1

例子:

arr = ["a","b","c"]; //arr[2] = "c", but arr.length = 3

所以如果循环遍历arr,我们需要在 index 处停止2,而不是3


推荐阅读