2017-02-20 95 views
3

請有人告訴我,下面的setInterval方法有什麼區別。將setInterval中的函數作爲參數傳遞的最佳方式是什麼?setInterval參數之間的區別

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

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

setInterval(red_on, 4000); 

回答

1

最後的方法是最好的。

基本上在第一方法,則需要(red_on())匿名函數的內部執行功能。你有兩個功能。

由於setInterval的走功能作爲第一個參數,你可以只傳遞你想不創建匿名函數來執行該功能。

如果你想做red_on()別的東西(如console.log),那麼第一種方法更好。

TL; DR沒有大的區別。

0

第二種方法是正確的在這種情況下。我會把它形容爲人。如果您想在第二種方法中與名爲Red_on的人交談,則您直接與Red_on交談。您仍然與Red_on交談的第一種方法是,您可以使用匿名功能或其他人與他們交談。因此,雖然紅色仍然收到您的消息,你只是在一個匿名函數中添加另一個步驟。

0

沒有區別。

從性能持續性的角度來看,第二種方法更好,因爲您不會創建一致函數,而僅使用參考。在第一種情況下,您將創建兩次函數以實現相同的結果。

2

當您需要將某些參數傳遞給該函數時,您可以使用第一種方法,否則第二種方法更簡單易讀。

例:

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

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

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

請參閱下面的代碼片段:

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

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

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

我希望它可以幫助你。再見。

相關問題