---
url: /docs/guide/usage/linter/rules/eslint/guard-for-in.md
---

### 作用

要求 `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);
  }
}
```

## 如何使用

## 版本

此规则在 v0.2.14 中添加。

## 参考资料
