Warum hat der setInterval-Funktion callback nur einmal ausführen?
Habe ich diesen Zähler habe ich gemacht, aber ich wollen, dass es immer nur Rennen, es ist wirklich einfach, was mache ich hier falsch?
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
- Das problem ist
timer()
ruft die function-Objekt, das ergab sich aus der Bewertungtimer
und übergibt dann das Ergebnis (undefined
) zusetTimeout
. Also, nicht aufgerufen werden können. Stattdessen übergeben Sie der Funktion-Objekt:setInterval(timer, 1000)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendet man eine Funktion aufrufen, statt eine Funktionsreferenz als parameter der setInterval-Funktion. Machen Sie es wie diese:
Oder kürzer (aber wenn die Funktion größer wird auch weniger lesbar):
setInterval
undsetTimeout
muss verwendet werden, Rückrufe, wie:oder Unbenannte Funktionen:
Warum dein code nicht funktioniert - wenn Sie an eine Funktion als argument an eine andere Funktion mit Klammern z.B.
doSomething ( someFunc() )
übergeben Sie das Ergebnis der Funktion.Wenn die Funktion übergeben, die als Objekt-z.B.
doSomething ( someFunc )
übergeben Sie einen Rückruf. Auf diese WeisesomeFunc
übergeben, als Referenz und es wird ausgeführt, irgendwo in der aufrufenden Funktion. Dies ist das gleiche wie Zeiger auf Funktionen in anderen Sprachen.Ein häufiger Fehler ist die Verwendung dieser beiden Funktionen, wie gezeigt, an w3schools. Dies macht eine implizite Aufforderung zu
eval
.