【前端外包字节面试】for in 和 for of 的区别

前两天参加了一次字节面试,其中一道题目是这样的。

说一下for in 和 for of 的区别

第一时间没反应过来,以为在考察这两个哪个适合便利对象,哪个适合便利数组。

答曰: for in 遍历的是key值,for of 遍历的是 value 值
for in更适合遍历对象(这里其实有一个坑 ,也就是为什么 for in 适合遍历对象的原因就是面试官要的答案)

面试官听完我的回答也愣了,表示说的也没错,但不是我要的。

然后给我举了一个例子 

let a = ['1','2','3']
a.name = 'tom'

这个时候考察的东西就变了

 他问我此时这个a分别会遍历出什么 像下面这样遍历 ↓

for(let i in a){console.log(i)} for(let j of a){console.log(j)}

问 i和j分别会输出什么 

正确答案是i→ 0,1,2,name    而  j→ 1,2,3

原因是for in 会遍历原型链上的所有属性  而 for of并不会 !!!! 这里面有一个新的知识点Iterator  也就是遍历器接口 这个在阮一峰大师的ES6入门里有讲到,for of会去找这个接口,感兴趣的可以看一看 


有问题欢迎留言!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值