Javascript: for(var i < array.length) v.s. for (e in array)



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

我的问题是:

有什么区别

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

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

在我的情况下,第一个返回"undefined"或数字序列,而第二个工作正常。

第一个遍历数组中元素的索引。第二个循环遍历任何对象中的属性和方法,给定数组也是一个具有"特殊"本地特征(元素的数字索引)的规则对象,它也可以像任何其他对象一样遍历第二个环路,不同之处在于:第一种方式,数组中索引的元素将显示出来。在第二种方式中,不仅会对其进行迭代,还会对数组对象继承的任何其他属性和方法进行迭代。

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

 array.custom ="x"

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

另一个结果会遍历数组的长度,并传递数组中每个项的索引。这是在Javascript中迭代数组的更安全的方法。

我认为这里真正的问题应该是之间的区别

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

和:

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

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

最新更新