In einer Funktion, die an Array.prototype.every übergeben wird, kann auf „Mutable Variable from Closure“ zugegriffen werden

Code wird klarer sprechen als ich:

var candidateIndex = 0;
var minValue = Number.MAX_VALUE;
topArray.every(function(element, index) {
    if (element.innerArray && element.innerArray.length < minValue) {
        minValue = element.innerArray.length;
        candidateIndex = index;
        if (minValue == 0) {
            return false;
        }
    }
    return true;
});

// ... use minValue and candidateIndex

Was dies tut, geht durch dietopArrayund entweder das erste Mitglied dieses Arrays mit eineminnerArray der Länge 0, sonst diejenige mit der geringsten Länge findeninnerArray. Es funktioniert gut, aber der Checker, den ich genau gemeldet habe, "Mutable Variable ist von Schließung zugänglich."

Ich sehe, dass das normalerweise eine schlechte Sache ist, besonders bei asynchronem Code. Ich habe durchgesehenSo vermeiden Sie den Zugriff auf veränderbare Variablen beim Schließen undZugriff auf veränderbare Variablen in einem Ereignisabschlussund verstehen, dass in diesen Fällen die anonyme Funktion asynchron ist und es wünschenswert ist, den Status der veränderlichen Variablen zu diesem Zeitpunkt zu speichern, in meinem Fall jedoch Iwollen Die synchrone anonyme Funktion rufe ich auf, um die Variable zu ändern.

In diesem Fall ist die Warnung, die ich erhalte, falsch und ich sollte sie einfach ignorieren, richtig? Außerhalb der Verwendung von afor Schleife statteveryGibt es eine Möglichkeit, die gewünschte Funktionalität zu erhalten, ohne dass eine Warnung angezeigt wird?

Aktualisieren: Was auch immer es wert ist, die Warnung scheint von meiner WebStorm-IDE selbst zu kommen, anstatt von einem der Analyse-Tool-Plugins.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage