Heim > Web-Frontend > js-Tutorial > Wie greife ich über JavaScript-Abschlüsse auf externe Variablen in Schleifen zu?

Wie greife ich über JavaScript-Abschlüsse auf externe Variablen in Schleifen zu?

Patricia Arquette
Freigeben: 2024-10-20 08:57:31
Original
878 Leute haben es durchsucht

How to Access Outside Variables in Loops from JavaScript Closures?

Zugriff auf externe Variablen in der Schleife durch JavaScript-Abschluss

Das Problem tritt auf, wenn auf Variablen zugegriffen wird, die innerhalb einer Schleife deklariert werden, insbesondere wenn auf solche Variablen später verwiesen wird in einem asynchronen Rückruf. Betrachten Sie zur Veranschaulichung den folgenden Codeausschnitt:

<code class="javascript">for (var i in this.items) {
    var item = this.items[i];
    // ...
}</code>
Nach dem Login kopieren

In diesem Fall ändert sich die Elementvariable mit jeder Schleifeniteration. Wenn später auf ein Element verwiesen wird, enthält es den Wert des letzten Elements im Array.

Lösung: Verwendung von Abschlüssen

Eine Lösung für dieses Problem besteht darin, Abschlüsse zu verwenden. die Funktionen erstellen, die andere Funktionen zurückgeben. Durch die Verwendung von Abschlüssen kann der Gültigkeitsbereich der Elementvariablen unterschiedlich sein, wie unten dargestellt:

<code class="javascript">for (var i in this.items) {
    var item = this.items[i];
    // ...
    $("#showcasebutton_"+item.id).click(
        (function(item) {
            return function() {
                alert(item.id);
                self.switchto(item.id);
            };
        })(item)
    );
}</code>
Nach dem Login kopieren

Alternative: jQuerys $.each()-Helper

Wenn jQuery verfügbar ist , kann der $.each()-Helfer als Abkürzung für einfache for/each-Schleifen verwendet werden. Aufgrund der Art und Weise, wie das Scoping in seinen Funktionsaufrufen funktioniert, entfällt die Notwendigkeit von Abschlüssen:

<code class="javascript">$.each(this.items,function(i, item) {
    // ...
    $("#showcasebutton_"+item.id).click(function() {
        alert(item.id);
        self.switchto(item.id);
    });
});</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie greife ich über JavaScript-Abschlüsse auf externe Variablen in Schleifen zu?. 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