Heim >Web-Frontend >js-Tutorial >Wie übergebe ich den richtigen Variablenwert an eine Funktion, wenn ich Ereignis-Listener in Schleifen verwende?
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!