Heim > Web-Frontend > js-Tutorial > Hauptteil

Wie vermeide ich Abschlussprobleme in Schleifen in JavaScript?

Mary-Kate Olsen
Freigeben: 2024-10-16 17:52:02
Original
961 Leute haben es durchsucht

How to Avoid Closure Issues in Loops 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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage