eslint/guard-for-in 风格
它的作用
要求 for-in 循环中包含一个 if 语句。
为什么这是不好的?
使用 for in 循环遍历对象时,会包含通过原型链继承的属性。如果在循环中没有对结果进行过滤,可能会导致循环中出现意外的项,进而引发不可预期的行为。
示例
此规则的错误代码示例:
javascript
for (key in foo) {
doSomething(key);
}此规则的正确代码示例:
javascript
for (key in foo) {
if (Object.hasOwn(foo, key)) {
doSomething(key);
}
}javascript
for (key in foo) {
if (Object.prototype.hasOwnProperty.call(foo, key)) {
doSomething(key);
}
}javascript
for (key in foo) {
if ({}.hasOwnProperty.call(foo, key)) {
doSomething(key);
}
}如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
json
{
"rules": {
"guard-for-in": "error"
}
}bash
oxlint --deny guard-for-in