Heim  >  Artikel  >  Web-Frontend  >  Warum verursachen Schließungen in Schleifen Verwirrung und wie können wir sie lösen?

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

DDD
DDDOriginal
2024-10-28 05:44:30290Durchsuche

 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>

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!

Stellungnahme:
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