Heim  >  Artikel  >  Web-Frontend  >  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
Patricia ArquetteOriginal
2024-10-20 08:57:31815Durchsuche

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>

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>

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>

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!

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