如何在 setInterval 函数中传递参数 例如:
intId = setInterval(waiting(argument), 10000);
它显示错误: useless setInterval call (missing quotes around argument?)
如何在 setInterval 函数中传递参数 例如:
intId = setInterval(waiting(argument), 10000);
它显示错误: useless setInterval call (missing quotes around argument?)
使用匿名函数
intId = setInterval(function(){waiting(argument)}, 10000);
这将创建一个无参数匿名函数,该函数waiting()
使用参数调用
或者使用setInterval()
函数的可选参数:
intId = setInterval(waiting, 10000, argument [,...more arguments]);
您的代码 ( intId = setInterval(waiting(argument), 10000);
) 调用waiting()
with argument
,获取返回值,尝试将其视为一个函数,并设置该返回值的间隔。除非waiting()
是返回另一个函数的函数,否则这将失败,因为您只能将函数视为函数。数字/字符串/对象不能被类型转换为函数。
您可以使用Function#bind
:
intId = setInterval(waiting.bind(window, argument), 10000);
它返回一个函数,该函数将使用给定的上下文 ( window
) 和任何可选参数调用目标函数。
使用此方法:
var interval = setInterval( callback , 500 , arg1 , arg2[, argn ] );
[...]
function callback(arg1, arg2[, etc]){
}
更多信息:window.setInterval
您可以使用 bind 和 apply 函数将参数存储在状态中。
在节点外壳中使用绑定的示例:
> var f = function(arg) { console.log (arg);}
> f()
undefined
> f("yo")
yo
> var newarg = "stuff";
> f(newarg)
stuff
> var fn = f.bind(this, newarg);
> fn()
stuff
> var temp = setTimeout(fn,1000)
> stuff
setInterval( 函数() { funca(10,3); }, 500 );