setInterval 中的 Javascript 函数
Posted
技术标签:
【中文标题】setInterval 中的 Javascript 函数【英文标题】:Javascript function in setInterval 【发布时间】:2014-01-20 00:51:51 【问题描述】:我有以下代码:
var foo=5;
var los= function ()
alert(foo);;
setInterval(los, 1000);
正常工作。
如果我将其更改为:
var los= function ()
alert(foo);;
setInterval(los(), 1000);
它只执行一次,在控制台中没有错误。
有人能解释一下为什么当我在 los
之后的 setInterval
函数中包含双亲时会发生这种情况吗?
【问题讨论】:
【参考方案1】:因为您正在执行los()
,然后该(单次)执行的结果被传递到setInterval
函数中。
setInterval
需要传入一个函数,而不是 undefined
,这是 los
返回的。然而,它不会抱怨——它只是什么都不做。
【讨论】:
【参考方案2】:请记住,在 javascript 中,函数是一个对象,可以像任何其他变量一样被传递。所以这是对函数的引用:
los
另一方面,执行函数并计算其结果:
los()
所以当你这样做时:
setInterval(los(), 1000)
您没有将间隔设置为函数,而是设置为函数的结果。因此,例如,如果函数返回 true
,那么您实际上是在编写以下代码:
setInterval(true, 1000)
函数执行一次,然后间隔重复其结果。您想要的是在区间内使用函数引用本身:
setInterval(los, 1000)
这样setInterval
将在每个间隔执行函数,而不是执行其结果(不执行任何操作)。
【讨论】:
【参考方案3】:第二个中的()
意味着调用函数在将结果传递给setInterval
。括号是明确要求调用函数的运算符;毕竟,这就是为什么要将括号括在 setInterval
的参数周围。
函数名本身就是 JavaScript 中的有效表达式。这种表达式的值是对函数的引用。这是您在设置间隔计时器时想要的值——您想告诉系统在计时器到期时调用什么函数,因此您传递对它的引用。
【讨论】:
以上是关于setInterval 中的 Javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章
此JavaScript代码中的setInterval如何工作?
JavaScript setInterval 函数不更新 <div> 元素中的 Gridview