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