你认为for...in和for循环有很大的区别吗?你更喜欢使用哪种"for“?为什么?
假设我们有一个关联数组的数组:
var myArray = [{'key': 'value'}, {'key': 'value1'}];所以我们可以迭代:
for (var i = 0; i < myArray.length; i++)和:
for (var i in myArray)我看不出有什么大的不同。是否存在任何性能问题?
发布于 2008-10-28 11:01:17
选择应该基于哪个习惯用法是最容易理解的。
使用以下命令迭代数组:
for (var i = 0; i < a.length; i++)
   //do stuff with a[i]使用以下命令迭代用作关联数组的对象:
for (var key in o)
  //do stuff with o[key]除非你有惊天动地的理由,否则请坚持既定的使用模式。
发布于 2008-10-28 15:39:08
Douglas Crockford在JavaScript: The Good Parts (第24页)中建议避免使用for in语句。
如果使用for in遍历对象中的属性名称,则结果是无序的。更糟糕的是:您可能会得到意想不到的结果;它包括从原型链继承的成员和方法的名称。
除了属性之外的所有内容都可以用.hasOwnProperty过滤掉。此代码示例实现了您最初可能想要的功能:
for (var name in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, name)) {
        // DO STUFF
    }
}发布于 2009-08-04 17:57:22
仅供参考- jQuery用户
默认情况下,jQuery的each(callback)方法使用for( ; ; )循环,只有当长度为undefined时才使用for( in )。
因此,我想说在使用这个函数时,假定顺序是正确的是安全的。
示例
$(['a','b','c']).each(function() {
    alert(this);
});
//Outputs "a" then "b" then "c"使用它的缺点是,如果你在做一些非UI逻辑,你的函数在其他框架上的可移植性将会降低。最好将each()函数与jQuery选择器一起使用,否则建议使用for( ; ; )函数。
https://stackoverflow.com/questions/242841
复制相似问题