【问题标题】:Javascript: Why use a for loop instead of a for-in loop for arrays?Javascript:为什么对数组使用 for 循环而不是 for-in 循环?
【发布时间】:2011-07-09 20:17:10
【问题描述】:

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

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

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

【问题讨论】:

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    问题是某些库(想到原型)扩展了数组类型,因此当您使用 for in 循环时,它会命中该数组上的所有 enumerable 属性,其中包括数组的所有元素,而且还全部加在属性或方法上。不是你想要的。

    for i in 循环仅迭代数组的元素,即您定义为 [1, 2, 3, 4] 的任何元素。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这没有意义,因为数组长度总是可以通过 x.length 获得。我的数组循环如下所示: for (var i=0,len=x.length;i
      猜你喜欢
      • 2011-04-21
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 2020-08-14
      相关资源
      最近更新 更多