フィルターされていない for-in ループを報告します。

このようなコンストラクトを使用すると、オブジェクト自体のプロパティだけでなく、プロトタイプのプロパティも処理されます。 これは、すべてのプロパティをコピーまたは変更するユーティリティメソッドや Object のプロトタイプが不正に変更されている可能性がある場合など、特定のケースでは予期されていない可能性があります。 たとえば、次のコードは 42myMethod を出力します。


Object.prototype.myMethod = function myMethod() {};
let a = { foo: 42 };
for (let i in a) {
  console.log(a[i]);
}

ループ全体を Object.keys() に置換するか、hasOwnProperty() チェックを追加するよう提案します。 クイックフィックスを適用すると、コードは次のようになります。


for (let i in a) {
  if (a.hasOwnProperty(i)) {
    console.log(a[i]);
  }
}