Heim > Web-Frontend > js-Tutorial > Hauptteil

Warum verursachen Schließungen in Schleifen Verwirrung und wie können wir sie lösen?

DDD
Freigeben: 2024-10-28 05:44:30
Original
289 Leute haben es durchsucht

 Why Do Closures in Loops Cause Confusion, and How Can We Solve It?

JavaScript-Abschlüsse in Schleifen verstehen

Das Problem:
Im bereitgestellten Code die Verwendung von Abschlüssen innerhalb einer Schleife erscheint verwirrend. Insbesondere das Vorkommen von i in doppelten Klammern hat zu Verständnisschwierigkeiten geführt.

Die Lösung: Funktionsfabrik

Um dieses Problem zu lösen, kann eine Technik namens Funktionsfabrik verwendet werden beschäftigt sein. Anstatt eine Funktion direkt einem Ereignishandler zuzuweisen, können wir eine Funktionsfabrik verwenden, um die gewünschte Funktionsreferenz zu generieren.

Codebeispiel:

<code class="javascript">function generateMyHandler(x) {
  return function() {
    alert(x);
  };
}

for (var i = 0; i < 10; i++) {
  document.getElementById(i).onclick = generateMyHandler(i);
}</code>
Nach dem Login kopieren

Erklärung:

In diesem Code erstellen wir eine Funktionsfabrik namens „generateMyHandler“, die einen Parameter x annimmt. Diese Factory gibt eine Funktion zurück, die den Wert von x meldet. Innerhalb der Schleife rufen wir „generateMyHandler“ für jedes i auf und weisen die zurückgegebene Funktion dem Event-Handler zu.

Wie es das Problem löst:

Die Verwendung einer Funktionsfabrik ermöglicht es uns um die Entstehung des Verschlusses zu isolieren. Indem wir i als Argument an die Factory-Funktion übergeben, erfassen wir einen eindeutigen Verweis auf i. Dadurch wird sichergestellt, dass jeder Abschluss seine eigene Instanz der Variablen behält, wodurch das Problem gemeinsamer Variablen entfällt.

Schlussfolgerung:

Durch den Einsatz einer Funktionsfabrik können wir diese effektiv nutzen Schließungen in Schleifen, ohne dass es zu Konflikten oder Verwirrung kommt. Diese Technik hilft, den Code zu vereinfachen und unser Verständnis darüber zu verbessern, wie Abschlüsse innerhalb der Ereignisschleife von JavaScript funktionieren.

Das obige ist der detaillierte Inhalt vonWarum verursachen Schließungen in Schleifen Verwirrung und wie können wir sie lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!