Heim >Web-Frontend >js-Tutorial >Wie übergebe ich den Wert (nicht die Referenz) einer JavaScript-Variablen an eine Funktion?
So übergeben Sie den Wert (nicht die Referenz) einer JS-Variablen an eine Funktion
In dynamischen Sprachen wie JavaScript sind Variablen standardmäßig als Referenz übergeben. Dies bedeutet, dass alle an der Variablen innerhalb der Funktion vorgenommenen Änderungen in der ursprünglichen Variablen außerhalb der Funktion widergespiegelt werden. In bestimmten Situationen ist dieses Verhalten unerwünscht und Sie müssen möglicherweise stattdessen den Wert einer Variablen an eine Funktion übergeben.
Für moderne Browser sollten Sie die Verwendung der Schlüsselwörter let oder const in Betracht ziehen, um blockbezogene Variablen zu definieren:
<code class="js">for (let i = 0; i < results.length; i++) { let marker = results[i]; google.maps.event.addListener(marker, 'click', () => change_selection(i)); }</code>
Dieser Ansatz stellt sicher, dass jede Iteration der Schleife einen neuen Bereich für die i-Variable erstellt und so das Problem verhindert, dass jeder Listener am Ende der Schleife den Wert von results.length verwendet.
Wenn Sie mit älteren Browsern arbeiten, erstellen Sie einen separaten Bereich für jede Iteration der Schleife, indem Sie die Variable als Funktionsparameter übergeben:
<code class="js">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 diese mit der Variablen aufrufen Als erstes Argument übergeben Sie effektiv einen Wert und erstellen einen Abschluss. Dadurch wird sichergestellt, dass jeder Listener über eine eigene Kopie der i-Variablen verfügt, die auf ihren Wert zum Zeitpunkt der Erstellung des Listeners verweist.
Das obige ist der detaillierte Inhalt vonWie übergebe ich den Wert (nicht die Referenz) einer JavaScript-Variablen an eine Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!