给定一个简单的基于零的数字索引数组:
var list = ['Foo', 'Bar', 'Baz']; 很多时候,我注意到当有人建议像这样遍历数组中的变量时:
for(var item in list) { ... } ...几乎可以肯定有人暗示这是不好的做法,并提出了另一种方法:
var count = list.length;
for(var i = 0; i < count; i++) { var item = list[i]; ... } 不使用上面的简单版本而是使用第二个示例的原因是什么? 问题来源于stack overflow
首先,对于循环来说,循环的顺序是不确定的for...in,因此无法保证属性将按照您想要的顺序进行迭代。
其次,for...in迭代对象的所有可枚举属性,包括从其原型继承的属性。对于数组,如果您的代码或页面中包含的任何库都增加了的原型,这可能会影响您Array,这可能是真正有用的事情:
Array.prototype.remove = function(val) { // Irrelevant implementation details };
var a = ["a", "b", "c"];
for (var i in a) { console.log(i); }
// Logs 0, 1, 2, "remove" (though not necessarily in that order)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。