gpt4 book ai didi

javascript - 使用需要参数的非匿名函数的 setInterval 必须在匿名函数内。为什么?

转载 作者:数据小太阳 更新时间:2023-10-29 03:59:50 26 4
gpt4 key购买 nike

好的,我已经在这里和其他地方查看了几篇关于 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 秒提醒我们注意兔子(对兔子保持警惕非常重要)。

因此问题:

  1. 这是允许您传入参数的唯一语法吗?
  2. 为什么 setInterval(hop("bunnies"),3000);不工作。

最佳答案

setInterval 需要一个函数 作为第一个参数。当您尝试时:

setInterval(function() {...}, 100);

setInterval(funcName, 100);

您正确地传递了一个函数。

然而,当您尝试 setInterval(funcName(), 100); 时,您实际上是在调用该函数并将其返回值传递给 setInterval 这是不正确的。

关于javascript - 使用需要参数的非匿名函数的 setInterval 必须在匿名函数内。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12895006/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com