Javascript为什么FOR IN是不好的做法?

可能重复:
JavaScript“For ... in”与数组

人们总是告诉我,使用FOR IN是一种不好的做法,请告诉我为什么? 为什么更好地使用我?

我总是喜欢使用FOR IN,因为我也使用PHP,在我使用foreach的地方也很多,它与JavaScript中的FOR IN非常相似:)


不好的做法是不了解枚举数组对象并迭代它的区别。 否则for...in循环中是非常好的工具。 有很大的内部差异,但我会尝试以实际的方式解释:

语法是: for (string in object) ,其中objectObject一个实例(自然也就是它的任何后代),并且string var在每次循环迭代中接收object属性名称。 但是Array也是Object后裔! 因此,使用以下内容是完全合法的:

var array = [0,1,2];
for (var property in array)
  alert(typeof property + 't' + property + 'n' + typeof array[property] + 't' + array[property]);

但根本没有意义 。 此外,请注意[]上方的括号符号。 这是一种会员运算符的形式,不能与数组元素访问混淆。 首先需要string类型和秒数的操作number 。 让我们打破上面的例子,用var array = new Array(3)来创建数组。 循环不再工作,但array.length == 3正确。

结论:使用for...in处理除数组之外的任何对象。 for (var number = 0; number < array.length; number++)数组使用for (var number = 0; number < array.length; number++)

顺便说一下,JavaScript 对象与PHP的关联数组类似(哈希表,如果你坚持正确的术语)。 语法是var object = {string:value,anotherName:moreStuff} 。 这里for...in方便!

进一步阅读

链接地址: http://www.djcxy.com/p/70015.html

上一篇: Javascript why FOR IN is a bad practice?

下一篇: JavaScript for loop syntax for array