函數(shù)的定義
在JavaScript中,使用函數(shù)前需要先定義才能調(diào)用。函數(shù)的定義包括三個部分:函數(shù)名、參數(shù)列表和函數(shù)體。函數(shù)的定義格式為:function 函數(shù)名([參數(shù)1, 參數(shù)2,...]){ 函數(shù)執(zhí)行部分;
在JavaScript中,使用函數(shù)前需要先定義才能調(diào)用。函數(shù)的定義包括三個部分:函數(shù)名、參數(shù)列表和函數(shù)體。函數(shù)的定義格式為:function 函數(shù)名([參數(shù)1, 參數(shù)2,...]){ 函數(shù)執(zhí)行部分; return 表達(dá)式;}。
例1:通過函數(shù)完成一個打招呼的程序。
例2:定義一個函數(shù),能實現(xiàn)打招呼程序。
例3:使用參數(shù)實現(xiàn)向不同的人打不同的招呼。
函數(shù)的參數(shù)
在JavaScript函數(shù)中,函數(shù)的參數(shù)有兩種形式:形參和實參。
形參是在函數(shù)定義時指定的參數(shù)。而實參是在函數(shù)調(diào)用時指定的參數(shù)。
例4:為函數(shù)定義return返回值,改進(jìn)例3的問題。
為什么函數(shù)需要返回值?函數(shù)在定義時要滿足兩個原則:內(nèi)聚性強和耦合性弱。內(nèi)聚性強表示函數(shù)的功能要專一,為了完成某個特定的任務(wù)而定義。而耦合性弱表示函數(shù)與函數(shù)之間盡量不要產(chǎn)生任何依賴關(guān)系。
函數(shù)在內(nèi)存中的存儲形式
在JavaScript中,無論是有名函數(shù)還是匿名函數(shù),都會返回函數(shù)在內(nèi)存中的首地址。
棧內(nèi)存用于存放簡單類型的數(shù)據(jù),如String、Number、Boolean。
堆內(nèi)存用于存儲復(fù)雜類型的數(shù)據(jù),如Object。數(shù)組也存儲在堆內(nèi)存中。
代碼段常用于存儲函數(shù)。
需要注意的是,存儲在堆內(nèi)存和代碼段中的數(shù)據(jù)都是一塊連續(xù)的內(nèi)存地址。一個函數(shù)的名稱也會返回函數(shù)在內(nèi)存中的首地址。
根據(jù)以上結(jié)論,對于語句var i display;,相當(dāng)于將display函數(shù)在內(nèi)存中的首地址賦值給變量i。
如果在display的名字后面添加一個圓括號,代表找到這塊內(nèi)存地址并執(zhí)行一段連續(xù)的代碼。
無論一個函數(shù)是有名函數(shù)還是匿名函數(shù),都會返回函數(shù)在內(nèi)存中的首地址。
一個函數(shù)無論有沒有名字,都會返回函數(shù)在內(nèi)存中的首地址。簡化之,我們把這種沒有任何名字的函數(shù)稱之為“匿名函數(shù)”。