using という関数にパラメータを渡す方法を教えてくださいsetInterval
。
私の例setInterval(funca(10,3), 500);
は正しくありません。
using という関数にパラメータを渡す方法を教えてくださいsetInterval
。
私の例setInterval(funca(10,3), 500);
は正しくありません。
実際の関数がすぐに実行されないように、無名関数を作成する必要があります。
setInterval( function() { funca(10,3); }, 500 );
それらをパラメーターとして setInterval に追加します。
setInterval(funca, 500, 10, 3);
あなたの質問の構文は eval を使用していますが、これは推奨される方法ではありません。
パラメーターとしてではなく、関数オブジェクトのプロパティとしてパラメーターを渡すことができます。
var f = this.someFunction; //use 'this' if called from class
f.parameter1 = obj;
f.parameter2 = this;
f.parameter3 = whatever;
setInterval(f, 1000);
次に、関数someFunction
で、パラメーターにアクセスできます。これは、スコープが自動的にグローバル空間に移動し、最初に setInterval を呼び出したクラスへの参照が失われるクラス内で特に役立ちます。このアプローチでは、上記の例の「someFunction」の「parameter2」に適切なスコープがあります。
無名関数を使用できます。
setInterval(function() { funca(10,3); },500);
最も実用的な答えは tvanfosson によるものです。私にできることは、ES6 で更新されたバージョンを提供することだけです。
setInterval( ()=>{ funca(10,3); }, 500);
引数を引用するだけで十分です。
OK --> reloadIntervalID = window.setInterval( "reloadSeries('"+param2Pass+"')" , 5000)
KO --> reloadIntervalID = window.setInterval( "reloadSeries( "+param2Pass+" )" , 5000)
'
各引数の一重引用符に注意してください。
IE8、Chrome、FireFox でテスト済み
const designated = "1 jan 2021"
function countdown(designated_time){
const currentTime = new Date();
const future_time = new Date(designated_time);
console.log(future_time - currentTime);
}
countdown(designated);
setInterval(countdown, 1000, designated);
これを行う方法はたくさんありますが、個人的には、これはクリーンで甘いものです。
これはうまくいきsetInterval("foo(bar)",int,lang);
ます.... JonKleiserが私を答えに導きます。
underscore js というライブラリを使用できます。これは bind メソッドに優れたラッパーを提供し、同様にはるかにクリーンな構文です。指定したスコープで関数を実行できるようにします。
_.bind(関数、スコープ、*引数)
その問題は、クロージャーの使用の良いデモンストレーションになります。アイデアは、関数が外側のスコープの変数を使用するということです。ここに例があります...
setInterval(makeClosure("Snowden"), 1000)
function makeClosure(name) {
var ret
ret = function(){
console.log("Hello, " + name);
}
return ret;
}
関数「makeClosure」は、外部スコープ変数「name」にアクセスできる別の関数を返します。したがって、基本的には、「makeClosure」関数に任意の変数を渡し、「ret」変数に割り当てられた関数でそれらを使用する必要があります。効果的に、setInterval は「ret」に割り当てられた関数を実行します。
別の解決策は、そのような関数を渡すことです(ダイナミクス変数がある場合): setInterval('funca('+x+','+y+')',500);