Javascript 为什么我不能在settimeout/setinterval中多次调用参数为的函数
我试图调用setinterval函数中的一个函数,如下所示Javascript 为什么我不能在settimeout/setinterval中多次调用参数为的函数,javascript,Javascript,我试图调用setinterval函数中的一个函数,如下所示 function dosomething(variable) { console.log(variable); } setinterval(dosomething(variable), 2000) 上面的代码只运行一次,并在第二次setinterval调用后抛出错误 我知道我可以使用匿名函数来实现这一点,但为什么不这样做呢?您可以使用一个匿名函数来调用dosomething方法 setInterval(function(){dos
function dosomething(variable) {
console.log(variable);
}
setinterval(dosomething(variable), 2000)
上面的代码只运行一次,并在第二次setinterval调用后抛出错误
我知道我可以使用匿名函数来实现这一点,但为什么不这样做呢?您可以使用一个匿名函数来调用
dosomething
方法
setInterval(function(){dosomething(variable)}, 2000)
在本例中,您正在调用
dosomething
,然后将其返回的值传递给setInterval()
,您可以使用一个匿名函数来调用dosomething
方法
setInterval(function(){dosomething(variable)}, 2000)
在本例中,您调用的是dosomething
,然后将其返回的值传递给此行的setInterval()
setinterval(dosomething(variable), 2000)
与
var x = dosomething(variable);
setinterval(x, 2000);
使用调试器时,您会注意到x
未定义
所以你得到了
dosomething(variable);
setinterval(undefined, 2000);
因此,运行一次并立即离开此线路
setinterval(dosomething(variable), 2000)
与
var x = dosomething(variable);
setinterval(x, 2000);
使用调试器时,您会注意到x
未定义
所以你得到了
dosomething(variable);
setinterval(undefined, 2000);
因此,直接运行一次,因为在传递未定义的
时,setInterval
(也请参见案例)接受对函数的引用,因为会立即调用dosomething()
。有什么原因导致否决吗?因为setInterval
(也请参见案例)在传递undefined
时接受对函数的引用,因为会立即调用dosomething()
。是否有否决投票的原因?