JavaScript中的循环用例有哪些实用性?它们对数组不好,因为它们忽略未定义的键并返回数组对象的可数属性。我从未见过它们在任何生产代码中使用过。他们几乎被开发人员弃用了吗?
答案 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文件中保存几个字符。
它可以更具可读性。