Heim >Web-Frontend >js-Tutorial >Wie können IIFEs dazu beitragen, die Einschränkungen von Ereignis-Listenern in schnellen Schleifen zu überwinden?

Wie können IIFEs dazu beitragen, die Einschränkungen von Ereignis-Listenern in schnellen Schleifen zu überwinden?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 07:02:02398Durchsuche

How can IIFEs help overcome the limitations of event listeners in fast loops?

Überwindung der Einschränkung von EventListenern in schnellen Schleifen mithilfe von Abschlüssen

Herausforderung:
Ereignis-Listener häufig mithilfe einer for-Schleife zu mehreren Objekten hinzufügen führt dazu, dass alle Listener auf dasselbe Objekt in JavaScript abzielen. Dies geschieht aufgrund des Gültigkeitsbereichs des Abschlusses.

Lösung:
Um dieses Problem zu beheben, verwenden Sie einen Immediately Invoked Function Expression (IIFE) innerhalb der Schleife. Dadurch wird für jede Iteration ein neuer Bereich erstellt, sodass die Variablen korrekt referenziert werden können.

Beispiel:

// Function to run on click:
function makeItHappen(elem, elem2) {
    var el = document.getElementById(elem);
    el.style.backgroundColor = "red";
    var el2 = document.getElementById(elem2);
    el2.style.backgroundColor = "blue";
}

// Autoloading function to add the listeners:
var elem = document.getElementsByClassName("triggerClass");

for (var i = 0; i < elem.length; i += 2) {
    // IIFE to create a new scope for each iteration
    (function () {
        var k = i + 1;
        var boxa = elem[i].parentNode.id;
        var boxb = elem[k].parentNode.id;
        elem[i].addEventListener("click", function() { makeItHappen(boxa,boxb); }, false);
        elem[k].addEventListener("click", function() { makeItHappen(boxb,boxa); }, false);
    }()); // immediate invocation
}

Erklärung:
In diesem Code wird das IIFE verwendet, um für jede Iteration einen neuen Bereich zu erstellen. Dadurch wird sichergestellt, dass die Variablen boxa und boxb korrekt referenziert werden und die Ereignis-Listener den entsprechenden Containerelementen zugewiesen werden.

Wichtige Erkenntnis:
Abschlüsse sind in JavaScript bei der Arbeit mit Schleifen von entscheidender Bedeutung die die Übergabe von Werten beinhalten. Durch das Erstellen neuer Bereiche mithilfe von IIFEs können Sie Probleme im Zusammenhang mit dem Abschluss verhindern und sicherstellen, dass sich Ihr Code wie beabsichtigt verhält.

Das obige ist der detaillierte Inhalt vonWie können IIFEs dazu beitragen, die Einschränkungen von Ereignis-Listenern in schnellen Schleifen zu überwinden?. 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