3

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

for-in循环用于迭代数组(或对象,我们将在后面看到)的元素。这是它的唯一用途;它不能用作替代foror的通用重复机制while。让我们看一个使用 afor-in循环遍历数组元素的示例。但请记住,这仅用于提供信息,因为for-in它主要适用于对象,并且for应将常规循环用于数组。

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

4

3 回答 3

3

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

如果您使用for-in循环,它将遍历对象上的所有属性(数组是对象),并且如果您将任意属性附加到未按数字索引的数组,则可能会给您带来意想不到的结果。

于 2011-07-09T20:19:53.557 回答
1

问题是某些库(想到原型)扩展了数组类型,因此当您使用for in循环时,它会命中enumerable该数组上的所有属性,其中包括数组的所有元素,但也都添加到属性或方法上. 不是你想要发生的事情。

循环只遍历数组的for i in元素,也就是说,任何你定义为[1, 2, 3, 4].

于 2011-07-09T20:18:48.720 回答
0

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

于 2011-07-09T20:21:23.120 回答