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()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 に答える