J'ai ce compteur que j'ai fait mais je veux qu'il fonctionne pour toujours, c'est vraiment simple, qu'est-ce que je fais mal ici?
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
Vous avez utilisé un appel de fonction au lieu d'une référence de fonction comme premier paramètre de setInterval. Fais-le comme ça:
function timer() {
console.log("timer!");
}
window.setInterval(timer, 1000);
Ou plus court (mais quand la fonction devient plus grande aussi moins lisible):
window.setInterval( function() {
console.log("timer!");
}, 1000)
setInterval
et setTimeout
doivent être utilisés avec des rappels, comme:
setInterval(timer, 1000);
ou fonctions sans nom:
setInterval( function() { console.log("timer!"); }, 1000 );
Pourquoi votre code ne fonctionne pas - lorsque vous passez une fonction en argument à une autre fonction avec des crochets, par exemple doSomething ( someFunc() )
vous passez le résultat de la fonction.
Lorsque la fonction est passée en tant qu'objet, par exemple doSomething ( someFunc )
vous passez un rappel. De cette façon someFunc
est passé comme référence et il est exécuté quelque part dans la fonction appelante. C'est la même chose que les pointeurs vers des fonctions dans d'autres langues.
Une erreur courante consiste à utiliser ces deux fonctions comme indiqué dans w3schools . Cela fait un appel implicite à eval
.