for循环和for...in的区别

for(var i in arr)和for(var i=0;i<arr.length;i++)比较

  1. 前者循环的是属性,后者循环的才是数组。
    如果项目中对数组进行了扩展,不能使用前者,否者扩展数组属性时扩展的函数体也会被当成数据返回。
    比如说我们扩展一个数组属性
     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
  2. 前者循环输出的i是字符串(string),后者是数字(number);

猜你喜欢

转载自blog.csdn.net/qq_37514029/article/details/84991564