我有这个计数器,但是我希望它永远运行,这很简单,我在这里做错了什么?
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
我有这个计数器,但是我希望它永远运行,这很简单,我在这里做错了什么?
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
Answers:
您将函数调用而不是函数引用用作setInterval的第一个参数。像这样做:
function timer() {
console.log("timer!");
}
window.setInterval(timer, 1000);
或更短(但是当函数变大时,其可读性也会下降):
window.setInterval( function() {
console.log("timer!");
}, 1000)
setInterval
并且setTimeout
必须与回调一起使用,例如:
setInterval(timer, 1000);
或未命名的函数:
setInterval( function() { console.log("timer!"); }, 1000 );
为什么您的代码不起作用-当您将一个函数作为参数传递给带有括号的另一个函数时,例如,doSomething ( someFunc() )
您正在传递函数的结果。
当函数作为对象传递时,例如,doSomething ( someFunc )
您传递的是回调。这种方式someFunc
作为参考传递,并在调用函数中的某处执行。这与其他语言中的函数指针相同。
一个常见的错误是使用w3schools中显示的这两个功能。这会隐式调用eval
。
timer()
调用评估产生的功能对象,timer
然后将结果(undefined
)传递给setTimeout
。因此,请勿调用它。相反,只需传递功能对象:setInterval(timer, 1000)