遍历对象方法for in 和for of的区别

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()把对象转化为数组再遍历

他有如下优点:

  1. 这是最简洁、最直接的遍历数组元素的语法

  2. 这个方法避开了for-in循环的所有缺陷

  3. 与forEach()不同的是,它可以正确响应break、continue和return语句

简单总结就是

  1. for in遍历的是数组的索引(即键名),而for of遍历的是数组元素值
  2. for-in得到的是对象的key或数组、字符串的下标
  3. for-of得到的是对象的value或数组、字符串的值,另外还可以用于遍历Map和Set

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值