2012-09-14 249 views
0

又有什麼區別:執行功能

function a(){ 
//... 
} 

setInterval(a, 1000); 

VS

setInterval(function(){ 
a(); 
}, 1000); 

除了明顯的,我可以在第二種情況下傳遞參數。

它不一定是setInterval。任何可以接受函數處理函數的函數。

回答

2

通過匿名功能還允許您撥打someObject.a()並保留this

如果你寫setTimeout(someObject.a, 300),該a()方法將在全球目標的背景下被調用,所以它的thiswindow。如果它預計thissomeObject,它會中斷。

如果您編寫setTimeout(function() { someObject.a(); }, 300),a()將在正確的上下文中調用。

+0

它不僅允許你保存'this',而且它允許你傳遞參數而不用硬編碼函數調用的字符串。 – Ian

+0

@ianpgall:是的,但OP已經在問題中說過了。 – SLaks

+0

@SLaks jeez,不敢相信我沒有看到,謝謝指出。 – Ian