很多关于stackoverflow和其他地方的例子,显示了setInterval按名称调用函数,后跟interval参数。如同以下情况一样有意义:
function sayHi() { window.alert('hello')}
window.setInterval(sayHi, 1000)
也尝试过(虽然这不是示例显示的方式)
window.setInterval(sayHi(), 1000)
但它没有(也没有非常简单的功能的任何变化)。我只能通过在setInterval语句中“拼出”函数来实现它,如下所示:
window.setInterval(function(){window.alert('hello')}, 1000)
关于此的任何信息都非常感谢。
答案 0 :(得分:2)
以下代码正在执行函数sayHi
window.setInterval(sayHi(), 1000)
^
|
+--- The setTinterval function
is receiving an undefined value,
rather than a function.
因此,此代码可以正常工作
window.setInterval(sayHi, 1000)
^
|
+--- setTinterval receives a function, that
will be executed in the future.
所以,基本上,你需要传递一个函数对象才能使它工作。
另一个例子是执行函数sayHi()
,它返回一个函数:
var id;
function sayHi() {
return function() { // This is the function that setInterval
window.alert('hello'); // will execute in the future.
clearInterval(id);
}
}
var id = window.setInterval(sayHi(), 1000)
答案 1 :(得分:-1)
setInterval
的标准参数是函数和间隔。
window.setInterval(sayHi(), 1000);
无法正常工作,因为sayHi()
不是函数,它未定义。 sayHi
是一个函数,而不是sayHi()
。
window.setInterval(sayHi, 1000)
是这样做的方法。
因为sayHi
等于function(){window.alert('hello')}
window.setInterval(sayHi(), 1000);
与window.setInterval(function(){window.alert('hello')}, 1000) ;
经过测试,两者都有效,您是否收到任何错误?