guard-for-in
Require for-in
loops to include an if
statement.
Looping over objects with a for-in
loop will include properties that are
inherited through the prototype chain. This behavior can lead to unexpected
items in your for loop.
Invalid:
for (const key in obj) {
foo(obj, key);
}
Valid:
for (const key in obj) {
if (Object.hasOwn(obj, key)) {
foo(obj, key);
}
}
for (const key in obj) {
if (!Object.hasOwn(obj, key)) {
continue;
}
foo(obj, key);
}