繁体   English   中英

Javascript:为什么对 arrays 使用 for 循环而不是 for-in 循环?

[英]Javascript: Why use a for loop instead of a for-in loop for arrays?

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

for-in循环用于遍历数组元素(或 object,我们将在后面看到)。 这是它的唯一用途; 它不能用作替换forwhile的通用重复机制。 让我们看一个使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM