[英]Javascript: Why use a for loop instead of a for-in loop for arrays?
我一直在阅读 Stoyan Stefanov 的面向对象的 Javascript,他曾写道:
for-in
循环用于遍历数组元素(或 object,我们将在后面看到)。 这是它的唯一用途; 它不能用作替换for
或while
的通用重复机制。 让我们看一个使用for-in
循环遍历数组元素的示例。 但请记住,这仅用于提供信息,因为for-in
主要适用于对象,而常规for
循环应该用于数组。
我过去在迭代数组元素时一直使用for
循环,我通常看到for
循环不是用于此目的for-in
循环,但是“常规for
循环应该用于数组”的原因是什么“?
对 arrays 使用常规for
循环的原因是它将迭代限制为索引值。
如果您使用for-in
循环,它将遍历 object 上的所有属性(数组是一个对象),并且如果您将任意属性附加到没有数字索引的数组,可能会给您带来意想不到的结果。
问题是某些库(想到原型)扩展了数组类型,因此当您for in
,它会命中该数组上的所有enumerable
属性,其中包括数组的所有元素,但也都添加到属性或方法。 不是你想要发生的事情。
for i in
循环仅迭代数组的元素,即您定义为[1, 2, 3, 4]
的任何内容。
好吧,当我不知道数组中元素的确切数量时,我主要使用它。 通常,它用于在动态或动态填充数组时对元素进行迭代。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.