好的,我已经在这里和其他地方查看了几篇关于 jquery/javascript 中的 setInterval 的帖子,关于答案的烦人之处在于我没有了解解决方案为何有效。
请考虑:
使用匿名函数,我们可以设置警报以重复输出“兔子”:
setInterval(function(){
alert("bunnies")
},3000);
但是如果我们想使用一个非匿名函数我们必须编码
setInterval(hop,3000);
其中函数:
function hop(){
alert("bunnies");
}
如果我们尝试编码:
setInterval(hop(),3000);
hop 只执行一次。我不明白这是为什么。我已经阅读了关于此的各种 SO,这意味着我们需要传递对 setInterval 的引用。这是否意味着第一种形式 setInterval(hop,3000);通过引用传递。如果可以,这可以解释吗?
因此我们有一个问题。显然,希望能够将参数传递给功能跳跃,例如......
setInterval(hop("bunnies"),3000);
其中函数:
function hop(msg){
alert(msg);
}
这确实会导致 hop 被调用并输出“bunnies”,但该函数再次只被调用一次。
据我所知,将参数传递给由 setInterval 控制的函数的唯一方法是将其合并到匿名函数中:
setInterval(function(){
hop("bunnies")
},3000);
这会传递参数并重复执行 hop,每 3 秒提醒我们注意兔子(对兔子保持警惕非常重要)。
因此问题:
- 这是允许您传入参数的唯一语法吗?
- 为什么 setInterval(hop("bunnies"),3000);不工作。
最佳答案
setInterval
需要一个函数 作为第一个参数。当您尝试时:
setInterval(function() {...}, 100);
或
setInterval(funcName, 100);
您正确地传递了一个函数。
然而,当您尝试 setInterval(funcName(), 100);
时,您实际上是在调用该函数并将其返回值传递给 setInterval
这是不正确的。
关于javascript - 使用需要参数的非匿名函数的 setInterval 必须在匿名函数内。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895006/