for...of/ for..in/forEach循环的区别

一、循环数组相同点

1、for…in循环遍历数组

    var arr = [1,2,3,4]
    for(var index in arr){
        console.log(arr[index);
    }     //打印结果为1,2,3, 4

2、for…of循环遍历数组

     var arr = [1,2,3,4]
     for(var value of arr){
         console.log(value);   //打印结果为:1,2,3,4
     }

3、for…in是否可以使用break、continue、return 下面我们将他嵌套在函数当中。

    var arr = [1,2,3,4]
    function fn(){
       for(var index in arr){
           if(index == 2)
           // break;    //1,2
           // continue     //1,2,4,
           return    //1,2
        console.log(arr[index]);
        
    }
}
fn();

4、for…of是否也可以使用break、continue、return 下面也将代码演示一下

    var arr = [1,2,3,4]
     function fn(){
        for(var value of arr){
            if(value == 2)
            //break;  //1
            //continue;  //1,3,4
           return;   //1
         console.log(value);
     }
 }
 fn();

通过打印结果可知for…in/ for…of 都是可以使用break、continue、return 的

二、循环数组不同点:

     Array.prototype.method = function(){
        console.log(this.length);
     }
     let arr = [1,2,3,4]
     for(let index in arr){
         console.log(arr[index]);
         console.log(typeof index);
     }

在这里插入图片描述

总结for..in遍历数组的特点
遍历的索引为字符串类型
遍历顺序可能不是按照数组顺序(随机顺序)
使用for…of 会遍历数组所有的可枚举属性,包括原型

    var arr = [1,2,3,4]
     Array.prototype.id = 123
     arr.name = 'anni'
     function fn(){
        for(var value of arr){
         console.log(value);
     }
}
fn();

在这里插入图片描述

总结for..of遍历数组的特点
for…of 遍历数组的只是数组内部的元素,而不包括数组对象的原型属性和对象属性

区别:

  • for…in 更适合遍历对象,不适合遍历数组(因为输出的顺序是不固定的)
  • for…in 只是遍历数组的索引(键名),而for …of 遍历的是数组的值
  • for…of 适用遍历数组/字符串/map/set 等迭代器对象的集合,但是不能遍历普通对象

三、forEach语句

forEach()方法用于调用数组的每个元素,并将元素传递给回调函数。

var array = ['a','b','c']
array.forEach(function(element){
   console.log(element)
})      //打印结果 a,b,c

总结:
使用简洁,
不用关心索引问题
不能遍历对象
不可以使用continue语句跳过一次循环和使用break语句结束循环

四、总结:

  • for…in 可以遍历数组和对象,for…of 不能遍历对象
  • for…in循环不仅遍历数字键名,还会遍历手动添加的其他建,甚至包括原型链上的建
  • 具有迭代器对象才可以使用for …of
  • for…of 与forEach () 不同的是,它可以响应break. continue, return 语句
  • 遍历数组使用for…of, 遍历对象使用for…in
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值