for in 和for of的区别,for of可以遍历伪数组 for in不可以

for in可以遍历对象/数组/字符串,遍历的是索引或对象的属性名

使用for in遍历时,会有以下问题

  1. index索引为字符串类型的数字(字符串),在几何运算中注意它的使用

  2. 遍历顺序有可能不是按照实际数组的内部顺序(可能按照随机顺序)

  3. 使用for-in会遍历数组所有的可枚举属性,包括原型方法method和name属性都会被遍历出来,通常需要配合hasOwnProperty()方法判断某个属性是否该对象的实例属性,来将原型对象从循环中剔除

所以for-in更适合遍历对象且配合hasOwnProperty()方法一起使用,通常是建议不要使用for-in遍历数组

for of 只能遍历数组,可以遍历伪数组,遍历的是值,不能遍历对象

for of可以简单有效的遍历数组,并且不会遍历原型上的method和name

如果想要遍历,可通过Object.keys()把对象转化为数组再遍历

!!!!注意这这个方法的搭配使用 Object.keys() ,Object.values()  , Object.entries()

优点:

  1. 简洁、直接获取value值

  2. 与forEach()不同,for of它可以break、continue和return语句

总结

  1. for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值
  2. for-in得到的是对象的key或数组、字符串的下标
  3. for-of得到的是对象的value或数组、字符串的值,另外还可以用于遍历Map和Set
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值