eslint/guard-for-in 样式
作用
要求 for-in 循环包含 if 语句。
为什么不好?
使用 for in 循环遍历对象将包含通过原型链继承的属性。在循环中不对结果进行过滤而使用 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);
}
}如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"rules": {
"guard-for-in": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"guard-for-in": "error",
},
});bash
oxlint --deny guard-for-in版本
此规则在 v0.2.14 中添加。
