Javascript:为什么使用for循环而不是数组的for-in循环?

时间:2011-07-09 20:17:11

标签: javascript for-loop for-in-loop

我一直在阅读Stoyan Stefanov的面向对象的Javascript,有一次他写道:

  

for-in循环用于迭代数组元素(或对象,我们稍后会看到)。这是唯一的用途;它不能用作替换forwhile的通用重复机制。让我们看一个使用for-in循环遍历数组元素的示例。但请记住,这仅供参考,因为for-in主要适用于对象,而常规for循环应该用于arrrays。

我在过去迭代数组元素时总是使用for循环,我经常看到for循环而不是for-in循环用于此目的,但是什么是“常规for循环应该用于数组的原因”?

3 个答案:

答案 0 :(得分:3)

对数组使用常规for循环的原因是它将迭代限制为索引值。

如果使用for-in循环,它将遍历对象上的所有属性(数组是对象),如果将任意属性附加到非数字的数组中,可能会给出意外结果索引。

答案 1 :(得分:1)

问题是某些库(Prototype浮现在脑海中)扩展了数组类型,所以当你使用for in循环时,它会命中该数组的所有enumerable属性,包括所有数组的元素,但也都添加了属性或方法。不是你想要发生的事情。

for i in循环仅对数组的元素进行迭代,也就是说,您将字面定义为[1, 2, 3, 4]

答案 2 :(得分:0)

当我不知道数组中元素的确切数量时,我主要使用它。通常,它用于在数组动态或动态填充时迭代元素。