17

如何在 setInterval 函数中传递参数 例如:

 intId = setInterval(waiting(argument), 10000);

它显示错误: useless setInterval call (missing quotes around argument?)

4

5 回答 5

47

使用匿名函数

 intId = setInterval(function(){waiting(argument)}, 10000);

这将创建一个无参数匿名函数,该函数waiting()使用参数调用

或者使用setInterval()函数的可选参数:

 intId = setInterval(waiting, 10000, argument [,...more arguments]);

您的代码 ( intId = setInterval(waiting(argument), 10000);) 调用waiting()with argument,获取返回值,尝试将其视为一个函数,并设置该返回值的间隔。除非waiting()是返回另一个函数的函数,否则这将失败,因为您只能将函数视为函数。数字/字符串/对象不能被类型转换为函数。

于 2013-03-14T13:19:03.177 回答
10

您可以使用Function#bind

intId = setInterval(waiting.bind(window, argument), 10000);

它返回一个函数,该函数将使用给定的上下文 ( window) 和任何可选参数调用目标函数。

于 2013-03-14T13:22:36.603 回答
6

使用此方法:

 var interval = setInterval( callback , 500 , arg1 , arg2[, argn ] );
 [...]
 function callback(arg1, arg2[, etc]){
 }

更多信息:window.setInterval

于 2013-03-14T13:21:00.587 回答
1

您可以使用 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
于 2015-04-22T00:42:40.327 回答
-3

setInterval( 函数() { funca(10,3); }, 500 );

于 2014-10-27T16:35:53.503 回答