Heim > Artikel > Web-Frontend > Wie vermeide ich Abschlussprobleme in Schleifen in JavaScript?
JavaScript-Schließung innerhalb von Schleifen: Ein praktisches Beispiel
Das Problem beim Durchlaufen von Schleifen und beim Speichern anonymer Funktionen besteht darin, dass die Variablen innerhalb dieser Funktionen Verweisen Sie auf dieselbe Variable außerhalb der Schleife. Dies kann zu unerwartetem Verhalten führen, wenn versucht wird, die Werte dieser Variablen zu protokollieren.
Lösung 1: ES6 Let-Anweisung
ES6 führt das Schlüsselwort let ein, das eine neue erstellt Variablenbereich für jede Iteration der Schleife. Dadurch wird sichergestellt, dass jede anonyme Funktion über eine eigene Variable verfügt, wodurch das Abschlussproblem gelöst wird.
<code class="js">for (let i = 0; i < 3; i++) { funcs[i] = function() { console.log("My value:", i); }; }</code>
Lösung 2: ES5.1 ForEach-Methode
Für Situationen, in denen es hauptsächlich darum geht Für die Array-Iteration bietet die Methode forEach eine unkomplizierte Lösung. Jede Iteration der Rückruffunktion verfügt über einen eigenen Abschluss und erhält das aktuelle Element des Arrays.
<code class="js">var someArray = [...]; someArray.forEach(function(arrayElement) { // Code for the specific array element // ... });</code>
Lösung 3: Klassischer Abschluss
Eine andere Lösung ist um die Variable innerhalb jeder Funktion an einen separaten, unveränderlichen Wert außerhalb der Funktion zu binden. Dies kann mithilfe einer Hilfsfunktion erreicht werden:
<code class="js">function createFunc(i) { return function() { console.log("My value:", i); }; } for (var i = 0; i < 3; i++) { funcs[i] = createFunc(i); }</code>
Das obige ist der detaillierte Inhalt vonWie vermeide ich Abschlussprobleme in Schleifen in JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!