1
banricho 2015-12-30 13:18:38 +08:00 1
要 var i ,否则 i 会变成全局变量
|
2
EPr2hh6LADQWqRVH 2015-12-30 13:19:28 +08:00 via iPhone 1
听说 V8 不能优化 in
|
4
dqh3000 2015-12-30 13:29:54 +08:00 1
有一种观点认为先获取 len 比较快
var len = a.length; for (var i = 0; i < len; i++) ~~~~~es6 应该考虑优先用 let 代替 var ,或者用 forEach+lambda a.forEach(i => { console.log(i); /* i 不是序号 */ }) |
5
serenader 2015-12-30 13:32:11 +08:00 1
在 ES6 的话倒是可以用 let of:
``` let arr = [1,2,3,4,5]; for (let i of arr) { console.log(i); } 1 2 3 4 5 ``` |
6
banricho 2015-12-30 13:32:26 +08:00 1
for ... in ... 遍历的是对象的属性,包括原型链上的属性
还有个区别就是 for ... in ... 中的索引 i 是一个 string 但是 for ... 中的计数 i 是一个 number |
7
serenader 2015-12-30 13:36:04 +08:00
|
8
SoloCompany 2015-12-30 13:46:11 +08:00 1
标准做法应该是 forEach + lambda (ECMA5 可直接忽略
break 的话,古老的法器 prototype 是有支持的,不知道 ECMA6 是否有同样的异常类型 |
9
asj 2015-12-30 14:50:40 +08:00 1
有坑,
var arr = [0]; arr[100] = 100; 两种循环的结果会有不同 for (var i =0;i<arr.length;i++) { console.log(i); } //0, 99 次 undefine , 100 for (var i in arr) { console.log(arr[i]); } //0, 100 |
10
YuJianrong 2015-12-31 00:42:05 +08:00 1
|