Heim  >  Artikel  >  Web-Frontend  >  Wie übergebe ich den richtigen Variablenwert an eine Funktion, wenn ich Ereignis-Listener in Schleifen verwende?

Wie übergebe ich den richtigen Variablenwert an eine Funktion, wenn ich Ereignis-Listener in Schleifen verwende?

DDD
DDDOriginal
2024-10-25 08:23:29905Durchsuche

How to Pass the Correct Variable Value to a Function When Using Event Listeners in Loops?

So übergeben Sie einen JS-Variablenwert an eine Funktion

Beim Durchlaufen von Arrays und beim Hinzufügen von Ereignis-Listenern zu jedem Element wird der Wert der Schleife angezeigt Die Zählervariable bleibt möglicherweise nicht wie erwartet erhalten. Anstatt den aktuellen Wert zu erfassen, verwendet der Listener den Endwert, nachdem die Schleife beendet wurde. Um dieses Problem zu beheben und den tatsächlichen Wert (nicht die Referenz) an die Funktion zu übergeben, ziehen Sie die folgenden Ansätze in Betracht:

Moderne Browser:

Verwenden Sie die Schlüsselwörter let oder const So deklarieren Sie blockbezogene Variablen:

<code class="javascript">for (let i = 0; i < results.length; i++) {
  let marker = results[i];
  google.maps.event.addListener(marker, 'click', () => change_selection(i));
}</code>

Ältere Browser:

Erstellen Sie einen separaten Bereich, um den Wert der Variablen beizubehalten, indem Sie ihn als Parameter an eine verschachtelte Funktion übergeben :

<code class="javascript">for (var i = 0; i < results.length; i++) {
  (function (i) {
    marker = results[i];
    google.maps.event.addListener(marker, 'click', function() {
      change_selection(i);
    });
  })(i);
}</code>

Indem Sie eine anonyme Funktion verwenden und die Variable als Argument übergeben, übergeben Sie deren Wert effektiv an die Funktion und erstellen einen Abschluss. Dadurch wird sichergestellt, dass jeder Listener zum Zeitpunkt der Erstellung Zugriff auf den richtigen Wert hat.

Das obige ist der detaillierte Inhalt vonWie übergebe ich den richtigen Variablenwert an eine Funktion, wenn ich Ereignis-Listener in Schleifen verwende?. 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