好的东西都是用来抛弃的—for in

啦啦啦~~

代码

<script>
    var arr =[1,2,3,4];
    for (var i in arr){
        console.log(arr[i]);
    }

</script>

结果控制台输出

1
2
3
4

这样使用没有任何问题

那么给js原型对象Array加一个方法呢

<script>
    var arr =[1,2,3,4];
    Array.prototype.fn = function(){
    }
    for (var i in arr){
        console.log(arr[i]);
    }
</script>

结果控制器里暑输出了

1
2
3
4
function () {

    }

使用for不会发生这样的情况

 

<script>
    var arr =[1,2,3,4];
    Array.prototype.fu = function () {
    }
    for (var i = 0;i<arr.length; i++){
        console.log(arr[i]);
    }
</script>

输入结果

1
2
3
4

同样的使用forEach也不会出现

语法
array.forEach(callback(currentValue, index, array){
    //do something
}, this)

array.forEach(callback[, thisArg])
参数

callback
为数组中每个元素执行的函数,该函数接收三个参数:
currentValue(当前值)
数组中正在处理的当前元素。
index(索引)
数组中正在处理的当前元素的索引。
array
forEach()方法正在操作的数组。
thisArg可选
可选参数。当执行回调 函数时用作this的值(参考对象)。
返回值

undefined.

代码

<script>
    var arr =[1,2,3,4];
    Array.prototype.fu = function () {
    }
   arr.forEach(function(ele){
       console.log(ele);//1234
   })
</script>

输出结果

1
2
3
4

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注