Aufeinanderfolgende Werteausgabe mit setTimeout in for-Loop
Sie stoßen auf ein Problem, bei dem Sie versuchen, aufeinanderfolgende Werte mit setTimeout zu drucken innerhalb einer for-Schleife, aber es führt dazu, dass der letzte Wert zweimal gedruckt wird. Dies liegt daran, dass, wenn Sie die Variable i direkt in der setTimeout-Funktion verwenden, ihr Wert aktualisiert wird, wenn die Funktion ausgeführt wird. Um dieses Problem zu beheben, ist es wichtig, für jede Iteration eine eigene Kopie von i zu erstellen.
Die bereitgestellte Lösung erreicht dies durch die Deklaration einer Hilfsfunktion namens doSetTimeout. In dieser Funktion wird eine neue Variable deklariert, die den aktuellen Wert von i enthält, der dann beim Erstellen des Timeouts als Argument übergeben wird. Dadurch wird sichergestellt, dass jede Timeout-Funktion über eine eigene Kopie von i verfügt, wodurch Probleme mit Wertaktualisierungen während der Ausführung vermieden werden.
function doSetTimeout(i) { setTimeout(function() { alert(i); }, 100); } for (var i = 1; i <= 2; ++i) doSetTimeout(i);
Mit dieser Lösung können Sie die aufeinanderfolgenden Werte 1 und 2 wie beabsichtigt erfolgreich drucken.
Das obige ist der detaillierte Inhalt vonWarum gibt „setTimeout' in einer „for'-Schleife den letzten Wert zweimal aus und wie kann ich das beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!