2017-02-20 2 views
3

以下のsetIntervalメソッドの違いは誰か教えてください。パラメータとしてsetIntervalに関数を渡す最良の方法は何ですか?setIntervalパラメータの相違点

function red_on(){ 
    $('#red_light').css('opacity', 1); 
} 

setInterval(function() { 
    red_on(); 
}, 4000); 

setInterval(red_on, 4000); 

答えて

1

最後の方法が最適です。

基本的に、最初のメソッドでは、匿名関数の中でfunction(red_on())を実行しています。あなたには2つの機能があります。

最初のパラメータとしてsetIntervalが機能しているので、匿名関数を作成せずに実行したい関数を渡すことができます。

red_on()他のもの(console.logなど)を実行する場合は、最初の方法が優れています。

TL; DR大きな違いはありません。

0

この場合、2番目の方法が正しい方法です。私はそれを人として表現します。 2番目の方法でRed_onという名前の人と話したい場合は、Red_onに直接話しかけています。最初のアプローチではまだRed_onと話していますが、無名関数や他の人と話をすることになります。だからRedはまだあなたのメッセージを取得していますが、あなたは無名の機能で別のステップを追加するだけです。

0

違いはありません。

匿名関数を作成せずに参照のみを使用するため、パフォーマンスの徹底的な第2のアプローチが優れています。最初のケースでは、同じ結果を得るために関数を2回作成します。

2

いくつかのパラメータを関数に渡す必要がある場合は、最初の方法を使用できます。そうでなければ、よりシンプルで読みやすい方法になります。

例:私はそれはあなたの役に立てば幸い

function test(par1){ 
 
    console.log(par1); 
 
} 
 

 
setInterval(function() { 
 
    test("message every 4 seconds"); 
 
}, 4000); 
 

 
setInterval(test("message2: called just one time!"), 4000);

function red_on(opacity){ 
    $('#red_light').css('opacity', opacity); 
} 

setInterval(function() { 
    red_on(1); 
}, 4000); 

setInterval(red_on, 4000); <-- Here you cannot pass parameters 

次のスニペットを参照してください。さようなら。