Heim > Artikel > Web-Frontend > Wie führe ich ein Skript nach einer bestimmten Verzögerung mit JavaScript aus und verhindere Änderungen von Variablenwerten?
Skript nach einer bestimmten Verzögerung mit JavaScript ausführen
Bei der Suche nach einer JavaScript-Methode analog zu jQuerys „delay()“ oder „wait()“ Funktionen, die eine verzögerte Skriptausführung ermöglichen, erwies sich „setTimeout()“ als zuverlässige Lösung.
Wenn es jedoch darum geht, eine Funktion mit einem Parameter zu einem späteren Zeitpunkt aufzurufen, müssen anonyme Funktionsaufrufe verwendet werden.
Während es verlockend ist, eine Funktion als Argument für einen späteren Aufruf zu übergeben, indem man die Klammern nach ihrem Namen weglässt, hat dieser Ansatz eine Einschränkung:
var a = "world"; setTimeout(alert("Hello" + a), 2000); // Displays "Hello world" immediately
Um eine verzögerte Ausführung sicherzustellen, verwenden Sie entweder a Funktionsname (wie von Flubba demonstriert) oder eine anonyme Funktion, insbesondere bei der Übergabe eines Parameters:
var a = "world"; setTimeout(function() { alert("Hello" + a); }, 2000); // Displays "Hello world" after 2 seconds
Diese Alternative weist jedoch eine Einschränkung auf: Variablen können sich während der Verzögerung ändern und so die Ausgabe der Funktion verändern. Um den ursprünglichen Variablenwert beizubehalten, verwenden Sie eine Rückruffunktion:
function callback(a) { return function() { alert("Hello" + a); } } var a = "world"; setTimeout(callback(a), 2000); a = "Stack Overflow"; // This change won't affect the delayed function
Durch die Einbettung des ursprünglichen Variablenwerts in die Rückruffunktion wird sichergestellt, dass der verzögerte Aufruf mit dem beabsichtigten Wert erfolgt, auch wenn dieser sich geändert hat in der Zwischenzeit.
Das obige ist der detaillierte Inhalt vonWie führe ich ein Skript nach einer bestimmten Verzögerung mit JavaScript aus und verhindere Änderungen von Variablenwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!