for forin forof forEach map区别

一、总结

  1. 相同点:都是串行遍历。
  2. 不同点:
    遍历方法对比

二、for of循环

  1. 设计目的:遍历所有数据结构的统一方法
  2. 原理:会调用数据结构的Symbol.iterator方法。
    • 只要数据结构定义了Symbol.iterator属性,就能用for of遍历它的成员。
    • 换句话说,只要能被for of遍历,数据结构上一定有Iterator接口。
  3. 适用范围:数组、set、map、类数组(arguments对象、Dom NodeList对象)、生成器对象、字符串。
  4. 可以中断(支持break/continue), 支持return。
  5. 数组的遍历器:只返回能通过数字下标访问的属性。

三、for in循环

  1. 为了遍历对象而设计。能够遍历数组的key。

  2. 缺点:

    • 数组的索引是数字,但是for in里拿到的键值是字符串。
    • for in还会遍历数组上挂载的其他属性;如果数组原型被重写(新增变量),还会访问到原型链上的值。
    • 特殊场景:如果对象键值是数字,则会按照键值的升序来遍历。

四、map forEach

相同点:

  1. 为了解决for遍历数组,写法太麻烦。
  2. 无法中途跳出循环。break、continue都不支持。

不同点:

  1. map支持return, 会新开辟内存接收返回值。
  2. forEach不支持return, 没有返回值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值