for in循环需要注意的地方

今天在使用for in循环的时候莫名其妙出现了一些东西,百度半天也不知道啥情况,后来想了想 是不是for in循环才会出现这个问题,照着这个方向又搜了一遍,果然,就是for in循环有一点坑

因为之前的代码里写了个

Array.prototype.uniq = function () {
    return [...new Set(this)]
}

也就是一道牛客网的数组去重的解法,没想到这个会导致我后面的代码也跟着出问题了

我本只是在做另一道题,颜色进制转换,结果,在对数组进行遍历打印的时候,就莫名其妙打印出了一个uniq,这货哪来的啊,害我找半天才知道是上面自己写的(别问我为啥才发现,只顾着浏览器端的显示结果了)

不过也还行,又登记了一个知识点

for in循环会把原型链中的属性和方法一起遍历出来

解决方法很简单:

换个遍历方式呗 使用 for of循环 

 

在廖雪峰老师的教程里,有这么一句话

for ... in循环由于历史遗留问题,它遍历的实际上是对象的属性名称。一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个属性。

综上所述 

for in循环不太好用,会把被遍历对象的属性方法都遍历出来,原型链里的属性方法也会被遍历出来,换成for of吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值