2017-04-06 60 views
4

在決定如何將回調傳遞給addEventListener時,我應該考慮什麼?考慮以下方法?在決定如何將回調傳遞給addEventListener時,我應該考慮什麼?

element.addEventListener('click', function(){ 
    // ... 
}); 

function doSomething(){ 
    // ... 
} 
element.addEventListener('click', doSomething); 

element.addEventListener('click', function doSomething(){ 
    // ... 
}); 
+1

恕我直言,他們有兩個自己的用例,所以這個問題可能會吸引基於非常輿論答案。有時使用一個,有時使用另一個是有意義的。大多數情況下,當您在事件處理程序中重用該功能時,使用命名函數(無代碼重複)會更有趣。但它確實取決於您的代碼以及您可能在幕後使用的框架 – Icepickle

+0

使用命名函數始終優先於使用匿名函數,尤其是對於調試,因爲在堆棧跟蹤中可輕鬆識別命名函數。 –

+0

@Ippickle你可以爲每個用例命名一些用例嗎?我會很感激它:) – veteri

回答

1

你的第一個代碼片段使用了一個匿名函數。 Todd Motto has written an article上市的一些原因,你應該避免使用匿名函數在回調函數:

  • 更難以調試
  • 不能再用
  • 不容易被檢測
  • 不能描述的角色功能
  • 使代碼缺少結構
  • 創建混亂/不清楚的代碼
  • 文檔將遭受(如jsDoc東西)
+1

謝謝。似乎我會繼續命名的功能。 – veteri

+0

謝謝zxxz。遵守這些類型的最佳做法也可以使評論代碼變得不必要。 – totallytotallyamazing

1

第一種方法被稱爲anonymous function。我不會說你有'必須'或'應該'這樣做的方式,但是你通常會看到它們用於創建真正簡單的一次性邏輯,你不想讓代碼膨脹一個新的塊。

如果你需要調試你的代碼,或者你可能想重用函數中的代碼,顯然你的生活會更好,如果你寫一個命名函數。

相關問題