开发者社区> 问答> 正文

为什么将带有数组的“ for(列表中的可变项)”视为JavaScript中的不良做法?

给定一个简单的基于零的数字索引数组:

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

展开
收起
保持可爱mmm 2020-02-08 20:07:00 401 0
1 条回答
写回答
取消 提交回答
  • 首先,对于循环来说,循环的顺序是不确定的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)

    2020-02-08 20:07:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载