有人可以向我解释这些示例之间的区别吗?
目前正在为我工作:
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")});
我想知道有什么区别。
答案 0 :(得分:1)
如果您使用
function () {nextSlide(slideShow1)}
,这是一个函数定义,而当您传递nextSlide(slideShow1)
时,就是在进行函数调用。您可以在这里阅读有关回调函数的更多信息:https://codeburst.io/javascript-what-the-heck-is-a-callback-aba4da2deced
答案 1 :(得分:1)
这是因为您需要引用函数或匿名函数,而不是函数调用。您还可以使用字符串:
setInterval("aFunction()", 1000); //This would also work
在两种情况下,您实际上只需要一个匿名函数-当函数具有参数时,或一次执行多个函数时。在这些情况下,字符串将不起作用,并且我们已经知道您不能只调用该函数。因此,要运行此功能:
nextSlide(slideShow1);
在超时情况下,您必须使用匿名函数:
setTimeout(function() { nextSlide(slideShow1) }, 1000);
希望这会有所帮助!