Unfiltered for..in loop
Reports unfiltered for-in loops.
The use of this construct results in processing not only own properties of an object but properties from its prototype as well. It may be unexpected in some specific cases, for example, in utility methods that copy or modify all properties or when Object's prototype may be incorrectly modified. For example, the following code will print 42 and myMethod:
Object.prototype.myMethod = function myMethod() {};
let a = { foo: 42 };
for (let i in a) {
console.log(a[i]);
}Suggests replacing the whole loop with a Object.keys() method or adding a hasOwnProperty() check. After applying the quick-fix the code looks as follows:
for (let i in a) {
if (a.hasOwnProperty(i)) {
console.log(a[i]);
}
}- By ID
Can be used to locate inspection in e.g. Qodana configuration files, where you can quickly enable or disable it, or adjust its settings.
JSUnfilteredForInLoop
Inspection ID: JSUnfilteredForInLoop
Here you can find the description of settings available for the Unfiltered for..in loop inspection, and the reference of their default values.
You can suppress this inspection by placing the following comment marker before the code fragment where you no longer want messages from this inspection to appear:
//noinspection JSUnfilteredForInLoopnote
Actual comment syntax will depend on the code language you are working with
More detailed instructions as well as other ways and options that you have can be found in the product documentation:
Inspection Details | |
|---|---|
By default bundled with: | CLion 2025.2, GoLand 2025.2, IntelliJ IDEA 2025.2, JetBrains Rider 2025.2, PhpStorm 2025.2, PyCharm 2025.2, Qodana for .NET 2025.2, Qodana for Go 2025.2, Qodana for JS 2025.2, Qodana for JVM 2025.2, Qodana for PHP 2025.2, Qodana for Ruby 2025.2, RubyMine 2025.2, WebStorm 2025.2 |