3

我认为以前肯定有过这样的问题,但是当前的搜索引擎无法为您提供代码行查询的结果。

我的问题是:

有什么区别

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

for ( var e in array )
    console.log(e);

就我而言,第一个返回“未定义”或数字序列,而第二个工作正常。

4

3 回答 3

2

for...in迭代javascript数组时实际上可能是一个问题。它遍历数组中的所有属性名称,因此它可能会比实际数组值更多。如果你说

 array.custom ="x"

然后它将打印“自定义”以及任何其他属性和数组的所有索引。

另一个结果超过了数组的长度,并将传递数组中每个项目的索引。这是在 Javascript 中迭代数组的更安全的方法。

于 2013-08-21T03:38:07.160 回答
2

那么第一个遍历数组中元素的索引。第二个遍历任何对象中的属性和方法,因为数组也是一个具有“特殊”本机特性(元素的数字索引)的常规对象,它也可以像任何其他对象一样通过第二个循环,区别在于:在第一种方式中,数组中索引的元素将显示出来。在第二种方式中,不仅会迭代,而且数组对象继承的任何其他属性和方法都会被迭代。

于 2013-08-21T03:40:57.833 回答
0

我相信这里真正的问题应该是:

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

和:

for ( var e in array )
    console.log(array[e]);

因为您应该比较应该显示相同内容的 2 个函数。

于 2019-10-20T10:33:58.897 回答