eslint报错guard-for-in,应该怎么修改?
for (const i in this.keywords) {
count += this.keywords[i].list.length;
}
报错 The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype guard-for-in
这个应该怎么修改?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用循环对对象进行for in循环将包括通过原型链继承的属性。此行为可能会导致for循环中出现意外的项目。
规则细节
此规则旨在防止在for in不对循环中的结果进行过滤的情况下使用循环可能产生的意外行为。因此,当for in循环不使用if语句过滤其结果时,它将发出警告。
以下模式被认为是问题:
以下模式不被视为问题:
楼主这个似乎是在遍历 this.keywords数组,
数组遍历的话用 for-of, 当然也可以遍历对象的属性
但是 for-in 只能用来遍历对象属性,因为 数组其实是一个特殊的对象,所以它也能通过属性来访问他的元素,但这样的访问会带来意想不到的问题,所以题主,好好思考一下自己到底是要遍历什么?
改成:
更好的方案 阮一峰老师的ES6入门
另一方面想,也可以从eslint方面入手,禁用掉检查,但是其实这样做有悖于使用eslint,所以我比较建议写符合eslint规则的代码,并养成好的习惯,也能在书写时排查一些问题。