for(var i in arr)和for(var i=0;i<arr.length;i++)比较
- 前者循环的是属性,后者循环的才是数组。
如果项目中对数组进行了扩展,不能使用前者,否者扩展数组属性时扩展的函数体也会被当成数据返回。
比如说我们扩展一个数组属性Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; // 在循环一个数组的时候回出现如下情况 var arr = [11,22]; for(var i in arr){ console.log(i); } 输出结果为0,1,remove
- 前者循环输出的i是字符串(string),后者是数字(number);