JavaScript中setInterval调用函数时为什么不需要加小括号?
问题解答:setInterval参数传入func而非func()的原因
func是函数引用:本质是传递func函数本身的内存地址给setInterval,相当于告知定时器「每间隔2000毫秒,就执行一次这个函数」,符合定时执行逻辑的需求。func()是函数调用:代码运行到这一行时就会立刻执行func函数,最终传递给setInterval的是func的返回值,你提供的代码中func没有定义返回值,所以实际传入的是undefined,定时器找不到要执行的目标逻辑,只会在初始化时执行一次时间更新,之后不会再有定时刷新的效果,完全达不到定时任务的预期。
补充说明:你代码里HTML行内事件写的
onclick="func()"是正常可用的,这是因为行内事件的属性值本质是字符串,浏览器触发点击事件时会把这段字符串当作JS代码执行,相当于主动调用了一次func,和直接给setInterval传参数的场景逻辑完全不同。
内容的提问来源于stack exchange,提问作者Abhishek Adhikari
相关产品推荐
相关产品推荐

