这个问题在这里已有答案:
有人可以向我解释这些例子之间的区别吗?
目前这对我有用:
var timer1 = setInterval(function () {nextSlide(slideShow1)}, slideShow1Timer);
我想知道的是为什么我需要一个匿名函数,因为这不起作用:
var timer1 = setInterval(nextSlide(slideShow1), slideShow1Timer);
哪个对我不起作用。
然后我也尝试了这个:
var timer1 = function(){setInterval(function () {nextSlide(slideShow1)}, slideShow1Timer)};
还有这个:
var timer1 = function(){setInterval(nextSlide(slideShow1), slideShow1Timer)};
我发现最上面的一个有效,但我不明白每个例子中发生了什么。所以为了让我免于猜测,我希望能够理解为什么我这样编写代码。
谢谢。
编辑:这不是该问题的重复,因为我不是在询问 setInterval。我在询问格式。
addEventListener 也是如此。在这个例子中:
window.addEventListener("click", function(){alert("test")});
或者像这样:
window.addEventListener("click", alert("test")});
我想知道有什么区别。
2 回答
这是因为您需要对函数或匿名函数的引用,而不是函数调用。你也可以使用一个字符串:
在两种情况下你真的只需要一个匿名函数 - 当函数有参数时,或者你一次执行多个函数时。在这些情况下,字符串不起作用,我们已经知道你不能只调用该函数。所以要运行这个功能:
在超时时,您必须使用匿名函数:
希望这有帮助!
如果你使用
function () {nextSlide(slideShow1)}
,这是一个函数定义,而当你传递nextSlide(slideShow1)
时,你正在进行函数调用。您可以在此处阅读有关回调函数的更多信息:https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced