2016-10-01 67 views
1

我下面的JavaScript上MDN的教程,他們添加一個onclick處理程序的按鈕,然後調用一個函數的函數中:在函數中調用函數有沒有好處?

myButton.onclick = function() { 
setUserName(); 
} 

我試過直接分配活動的功能和它仍然工作,所以我想知道是否有充足的理由這樣做。

+0

通常,當您需要在某些方面修改參數或需要按順序調用多個函數。 – zzzzBov

+0

我不明白有關參數的一點,但我確實看到了調用多個函數的原因。 –

回答

2

如果函數不關心作爲第一個參數傳遞的事件對象,則不會。它膨脹了代碼,在內存中創建了一個額外的對象,並沒有任何好處。

+0

我不明白你的意思是事件對象和第一個參數,對不起 - 請你澄清一下。 –

+0

https://developer.mozilla.org/en-US/docs/Web/API/Event – Quentin

0

定義一個處理事件的lambda函數是一種不好的編碼方式,IMO。將界面和實際處理分離更簡潔,更安全。

如果您需要在您的處理程序中執行一些複雜的操作,那麼定義一個正確命名的函數來執行該任務並將處理程序分配給它就非常簡單。

一旦你完成了這個可怕的命名工作,你可以做任何你想要與你的處理程序,包括通過將虛擬事件測試它,重新使用,用於處理來自不同的按鈕事件等

在另一方面,網頁最多可能不會超過幾周或幾個月,並不是乾淨編碼的最佳場所......

+0

對不起,我是一個新手,並不明白什麼是lambda函數或你的意思是接口。 –

+0

一個lambda函數只是一個沒有名字的函數。界面基本上就是你所看到的(按鈕,div等),而處理是代碼的算法部分(用戶通過界面觸發操作時用戶對數據執行的操作)。例如,如果用戶單擊按鈕或按下某個熱鍵,則可以執行相同的處理。 –