javascript尽量不要使用for in语句遍历数组的原因分析

时间:2017-09-25
js遍历数组的方法有很多,比如for,foreach,for in,map等语句都可以用于遍历JS中的数组。本文章主要向大家分析为什么不要使用for in语句遍历数组。需要的朋友可以参考一下。

for...in主要用于对数组和对象的属性进行遍历。for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

语法:for (variable in object) {...}

variable:每次迭代,一个不同的属性名将会赋予variable。

object:可枚举属性被迭代的对象。

javascript尽量不要使用for in语句遍历数组,主要有两个原因:

一、像其他人一样说,你可能会得到不在你的数组或从原型继承的键。因此,如果让我们说,一个库将一个属性添加到Array或Object原型中:

Array.prototype.someProperty = true

你会得到它作为每个数组的一部分:

for(var item in [1,2,3]){
  console.log(item) // will log 1,2,3 but also "someProperty"
}

您可以使用hasOwnProperty方法解决此问题:

var ary = [1,2,3];
for(var item in ary){
   if(ary.hasOwnProperty(item)){
      console.log(item) // will log only 1,2,3
   }
}

但是对于使用for-in循环的任何对象进行迭代都是如此。

、通常,数组中项目的顺序很重要,但是for-in循环不一定以正确的顺序进行迭代,这是因为它将数组视为对象,这是在JS中实现的方式,而不是作为数组。这似乎是一件小事,但它真的可以解决应用程序,很难调试。