我有我制作的这个计数器但是我希望它能够永远运行,这很简单,我在这里做错了什么?
function timer() {
console.log("timer!")
}
window.setInterval(timer(), 1000)
答案 0 :(得分:97)
您使用函数调用而不是函数引用作为setInterval的第一个参数。这样做:
function timer() {
console.log("timer!");
}
window.setInterval(timer, 1000);
或者更短(但是当函数变得更大而且可读性更差时):
window.setInterval( function() {
console.log("timer!");
}, 1000)
答案 1 :(得分:9)
setInterval
和setTimeout
必须与回调一起使用,例如:
setInterval(timer, 1000);
或未命名的功能:
setInterval( function() { console.log("timer!"); }, 1000 );
为什么你的代码不起作用 - 当你将一个函数作为参数传递给另一个带括号的函数时,例如doSomething ( someFunc() )
您正在传递函数的结果。
当函数作为对象传递时,例如doSomething ( someFunc )
您正在通过回调。这种方式someFunc
作为引用传递,并在调用函数中的某处执行。这与其他语言中的函数指针相同。
常见的错误是使用w3schools所示的这两个功能。这会对eval
进行隐式调用。