我一直在阅读Stoyan Stefanov的面向对象的Javascript,有一次他写道:
for-in
循环用于迭代数组元素(或对象,我们稍后会看到)。这是唯一的用途;它不能用作替换for
或while
的通用重复机制。让我们看一个使用for-in
循环遍历数组元素的示例。但请记住,这仅供参考,因为for-in
主要适用于对象,而常规for
循环应该用于arrrays。
我在过去迭代数组元素时总是使用for
循环,我经常看到for
循环而不是for-in
循环用于此目的,但是什么是“常规for
循环应该用于数组的原因”?
答案 0 :(得分:3)
对数组使用常规for
循环的原因是它将迭代限制为索引值。
如果使用for-in
循环,它将遍历对象上的所有属性(数组是对象),如果将任意属性附加到非数字的数组中,可能会给出意外结果索引。
答案 1 :(得分:1)
问题是某些库(Prototype浮现在脑海中)扩展了数组类型,所以当你使用for in
循环时,它会命中该数组的所有enumerable
属性,包括所有数组的元素,但也都添加了属性或方法。不是你想要发生的事情。
for i in
循环仅对数组的元素进行迭代,也就是说,您将字面定义为[1, 2, 3, 4]
。
答案 2 :(得分:0)
当我不知道数组中元素的确切数量时,我主要使用它。通常,它用于在数组动态或动态填充时迭代元素。