函數允許你在一個代碼塊中存儲一段用于處理一個任務的代碼,然后在任何你需要的時候用一個簡短的命令來調用,而不是把相同的代碼寫很多次。
函數在哪?
在 JAVAScript中, 你將發現函數無處不在 。事實上, 到目前為止,我們一直在使用函數,只是我們還沒很好的討論它們。
幾乎任何時候,只要我們使用一個帶有一對圓括號()的JavaScript結構,并且不是在使用一個常見的比如for循環,while或do…while循環,或者if語句這樣的內置語言結構時,那么我們就正在使用函數。
瀏覽器內置函數
我們已經使用了很多瀏覽器內置函數,當我們操作一個字符串的時候,例如:
或者當我們操作一個數組的時候:
或者當我們生成一個隨機數時:
JavaScript有許多內置的函數,可以讓我們做很多有用的事情,而無需自己編寫所有的代碼。
請記住,這些內置瀏覽器函數不是核心JavaScript語言的一部分——被定義為瀏覽器API的一部分,它建立在默認語言之上,以提供更多的功能。
其實,嚴格說來,內置瀏覽器函數并不是函數——它們是方法。
自定義函數
每當我們看到一個自定義名稱后面都帶有括號,那么這使用的是自定義函數。
運行該函數一次可以再控制臺打印一次 "My name is David."。
如果我們想要打印5次呢,可能很多人會這樣寫:
那如果我們想要打印10次,20次或者更多的任意次呢,難道每打印一次都寫一個for循環嗎,這不太現實。我們想到了函數:
可以看出,使用函數方法后,可以大幅度的較少我們的代碼量,只需要改變參數值然后調用函數就可以了。
匿名函數
我們把上面的函數改變一下:
這個函數叫做匿名函數 — 它沒有函數名! 它也不會自己做任何事情。 我們通常使用匿名函數以及事件處理程序, 例如,如果單擊相關按鈕:
還可以將匿名函數分配為變量的值,例如:
匿名函數也稱為函數表達式。在前面的文章中我已經提到過,函數表達式與函數聲明有一些區別。函數聲明會進行聲明提升(declaration hoisting),而函數表達式不會。