fon in 和 for of 的区别

本文深入探讨JavaScript中的for循环、for...in、for...of及forEach的使用场景与优劣。详细解析不同循环方式在数组、对象、字符串等数据类型上的表现,以及如何选择最合适的循环方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

for 循环

其实他一般情况下是根据数组,类数组的length的属性值去循环

for in

一般的作用是枚举把key枚举出来,但是当我们枚举数组,或者字符串的时候会把原型上的方法枚举出来

Object.prototype.objCustom = function () { };
    Array.prototype.arrCustom = function () { };

    var arr = [3, 5, 7];
    arr.foo = 'hello';

    for (var i in arr) {
      console.log(i);
    }
    // 结果是:
    // 0
    // 1
    // 2
    // foo
    // arrCustom
    // objCustom

for of

一般是迭代把值输出出来,但是不可以迭代对象,但是对数组,字符串以及,还可以迭代类型数组~”;还可以迭代Map~;还可以迭代Set~”;“还可以迭代generators……都是可以的

说到迭代就有一个forEach要来对比一下了

  • forEACH 可以拿到index也就算key值,但是不可以终止遍历,而for of可以

 

总计

  • 对于纯对象的遍历for..in要厉害一些(数组有把原型上的方法枚举出来)
  • 对于数组遍历,如果不需要知道索引,for..of迭代更合适,因为还可以中断
  • 如果需要知道索引,则forEach()更合适
  • 字符串,类数组,类型数组的迭代,虽然for..in也有这方面能力,但是for..of更好

参考

看,for..in和for..of在那里吵架!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值