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 dietopArray
und 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 stattevery
Gibt 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.