对于JavaScript中的循环使用

时间:2013-12-04 20:38:19

标签: javascript for-in-loop

JavaScript中的循环用例有哪些实用性?它们对数组不好,因为它们忽略未定义的键并返回数组对象的可数属性。我从未见过它们在任何生产代码中使用过。他们几乎被开发人员弃用了吗?

3 个答案:

答案 0 :(得分:4)

它们最适合迭代Javascript或JSON对象,如{"foo":bar,"baz":boo},但不适用于数组,有关详细信息,请参阅更多here

最好这样做:

var obj={"foo":bar,"baz":boo}
for(var key in obj){
   //hasOwnProperty ensures that it exists and bad stuff doesn't happen with deleted properties
   if(obj.hasOwnProperty(key)){
       obj[key].doSomething();
   }
}
道格拉斯·克罗克福德(Douglas Crockford)对此here有一个非常好的页面。对于数组,它们永远不应该被使用,但它们对于对象非常有用,特别是如果你不知道键的顺序是什么,或者那里有什么键。对于数组,只需执行此操作

for(var i=0;i<array.length;i++){
//do some stuff
}

答案 1 :(得分:1)

MDN说:

  

以任意方式迭代对象的可枚举属性   订购。对于每个不同的属性,可以执行语句。

您还可以查看 Exploring JavaScript for-in loops

var str = "hello!", spreadOut = "";

for (var index in str) {
    (index > 0) && (spreadOut += " ")
    spreadOut += str[index];
}

spreadOut; //"h e l l o !"

您可以在CMS解释的位置引用此thread

  

for-in语句的目的是枚举对象   属性,这个陈述将在原型链中出现,   枚举也继承属性,有时不是   期望的。

答案 2 :(得分:1)

迭代迭代不依赖于顺序的对象很有用。它在某些方面很有用。

for in语句中使用的变量是当前值的关键字。

简写表示法可以在.js文件中保存几个字符。

它可以更具可读性。