Javascript为什么FOR IN是不好的做法?
可能重复:
JavaScript“For ... in”与数组
人们总是告诉我,使用FOR IN是一种不好的做法,请告诉我为什么? 为什么更好地使用我?
我总是喜欢使用FOR IN,因为我也使用PHP,在我使用foreach
的地方也很多,它与JavaScript中的FOR IN非常相似:)
不好的做法是不了解枚举数组对象并迭代它的区别。 否则for...in
循环中是非常好的工具。 有很大的内部差异,但我会尝试以实际的方式解释:
语法是: for (string in object)
,其中object
是Object
一个实例(自然也就是它的任何后代),并且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