例如for (key in obj),每次遍历key都会被赋值成对象obj的一个键名,{a:1,b:2}遍历过程key依次为a和b对于数组,key取得是数组下标
所以你这里遍历的是个数组,i的值分别是数组的下标,用for in遍历数组可能会由于数组增加可枚举的成员而变得不准确
你可以试一下在你的代码前加上
Array.prototype.a = 123
再运行看下结果就有问题了,不要用for in 遍历数组用forEach
第一种:普通for循环
for(j = 0 j < arr.length j++) {
}
第二种:优化版for循环
for(j = 0,len=arr.length j < len j++) {
}
第三种:弱化版for循环
for(j = 0 arr[j]!=null j++) {
}
第四种:foreach循环
arr.forEach(function(e){
})
第五种:foreach变种
Array.prototype.forEach.call(arr,function(el){
})
第六种:for in循环
for(j in arr) {
}
第七种:map遍历
arr.map(function(n){
})
第八种:forof遍历(需要ES6支持)
for(let value of arr) {
})
for..in是用来遍历对象的,跟for循环差不多,var obj = { a:"A", b:"B", c:"C" }
for(var i in obj){console.log( i, obj[i] )
}
//a A
//b B
//c C