为什么将带有数组的“ for(列表中的可变项)”视为JavaScript中的不良做法?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

2020-02-08 20:07:00 194 1

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

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

取消 提交回答
全部回答(1)
  • 保持可爱mmm
    2020-02-08 20:07:12

    首先,对于循环来说,循环的顺序是不确定的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)

    0 0
相关问答

1

回答

Javascript中的反向数组而不更改原始数组

2020-02-06 22:47:56 214浏览量 回答数 1

1

回答

Javascript中的反向数组而不更改原始数组

2020-02-06 22:47:45 1098浏览量 回答数 1

1

回答

如何使用JavaScript将长数组拆分为较小的数组

2020-02-08 19:45:34 277浏览量 回答数 1

1

回答

javascript对象过滤器数组

2020-02-08 19:29:39 297浏览量 回答数 1

1

回答

JavaScript:空数组,[]在条件结构中评估为true。为什么是这样?

2020-02-08 19:13:20 256浏览量 回答数 1

1

回答

Javascript-在另一个数组内插入一个数组

2020-02-08 14:42:12 203浏览量 回答数 1

1

回答

Javascript。将数组值分配给多个变量?

2020-02-08 14:32:11 314浏览量 回答数 1

1

回答

如何通过Javascript中的值对关联数组进行排序?

2020-02-08 14:23:19 207浏览量 回答数 1

1

回答

js怎么把数组转成json字符串数组对象

2018-05-10 20:00:18 1230浏览量 回答数 1

2

回答

关于javascript中给数组新注册方法的后遗症

2016-07-18 10:09:53 1916浏览量 回答数 2
66
文章
12595
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载