setIntervalcallback只运行一次

我有这个计数器,但是我希望它永远运行,这很简单,我在这里做错了什么?

function timer() { console.log("timer!") } window.setInterval(timer(), 1000) 

您使用函数调用而不是函数引用作为setInterval的第一个参数。 像这样做:

 function timer() { console.log("timer!"); } window.setInterval(timer, 1000); 

或更短(但是,当function变得更大也不太可读):

 window.setInterval( function() { console.log("timer!"); }, 1000) 

setIntervalsetTimeout 必须与callback一起使用,如:

 setInterval(timer, 1000); 

或未命名的function:

 setInterval( function() { console.log("timer!"); }, 1000 ); 

为什么你的代码不工作 – 当你将一个函数作为parameter passing给另一个带括号的函数,例如doSomething ( someFunc() )你正在传递函数的结果。

当函数作为对象传递时,例如doSomething ( someFunc )你传递一个callback函数。 这种方式someFunc作为参考传递,它在调用函数的某处执行。 这与指向其他语言的函数的指针是一样的。

一个常见的错误是使用w3schools中显示的这两个函数。 这使得对eval的隐式调用。