在javascript中使用for循环定义中的arr [i]和arr.length之间的区别

时间:2011-06-14 14:18:50

标签: javascript

我遇到了一些我以前从未见过的东西,我喜欢它。检查以下示例:

var arr = ['un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept'];

for(var i = 0; arr[i]; i++){
  console.log( arr[i] );
}

而不是:

for(var i = 0; i < arr.length; i++){
  console.log( arr[i] );
}

但是它们都实现了相同的结果,即输出数组列表。

我的问题是,在 for loop 声明中使用'arr [i]'和'arr.length'之间有什么区别(或相似性)?

非常感谢

5 个答案:

答案 0 :(得分:11)

var arr = ['un', 'deux', 'trois', null, 'cinq', 'six', 'sept'];

现在怎么样?

delete arr[2];

现在怎么样?

只要数组中有伪值或键中的不连续(例如使用delete运算符创建的值),差异就会显示出来。 length循环将产生假值并继续,另一个将停止。

答案 1 :(得分:2)

i < arr.length

如果i小于arr长度,则此语句会检查每个循环

arr[i]

此处,每个循环周期都会检查位置 arr的{​​{1}}是否真实。

答案 2 :(得分:2)

答案 3 :(得分:1)

使用arr[i]作为continue条件检查数组中该位置元素的真实性。这是一个可爱的技巧,但如果你想迭代包含虚假值的数组,如

,它将无法工作
[1, 4, 6, 0, 3, 9]
// or
[true, 'seven', false, -1, {foo: 'bar'}]

使用i < arr.length检查当前索引是否小于数组的总长度。

答案 4 :(得分:1)

只要条件部分为真,for循环就会迭代。第一次条件为假时,循环停止。

只要值以下之一,

arr[i]为真:false,0,空字符串,null,undefined,NaN

i < arr.length检查i是否小于数组的大小,这是你应该做的。