HTML5學堂-碼匠:掌握JavaScript代碼的你,必定編寫封裝過函數,爲了提高函數的控制性,必不可少的就是參數,必選可選的一大堆參數羅列出來,函數調用貌似變得麻煩起來~~~dom
Tips:
必選參數指的是必需要傳入實參的參數;
可選參數在函數中有默認值,若有傳入實參,則取實參的值,若是沒有傳入實參,則使用默認值。函數
當一個函數既有必選參數,又有可選參數,在定義函數時,咱們可能採起的方式是:不管參數是可選參數仍是必選參數,都將參數羅列下來(一般按照先必選再可選的順序)
可是這樣的羅列方法,會致使一些問題的產生!
舉例來講:有一個功能函數h5course,name和domain爲其必選參數,而minAPP和book爲其可選參數,而咱們如此定義函數:測試
此時,調用函數,須要傳入name、domain、book這三個參數,那麼,問題來了!
因爲在函數定義當中,book的參數位置位於minApp參數以後,在調用函數時,若是但願爲book這個參數傳入值,就必須按照以下方式進行書寫:spa
h5course('name參數值', 'domain參數值', '', 'book參數值');
不難發現,當前第三個參數的處理就變得麻煩起來。因而乎,可能不少人會在函數中經過添加if判斷,來進行參數控制 ——3d
此時仍然存在這樣兩個問題:
第一,函數的調用者必需要了解函數內部的參數判斷方式,纔可以正確書寫「不須要的可選參數」
第二,在調用多個可選參數的函數時,調用代碼會變得很麻煩(固然你能夠爲函數添加註釋,下降使用時的難度)code
面對如上的這些問題,下面這種方法,你值得擁有!對象
一塊兒來用此方法調整一下h5course函數blog
在此段代碼當中,傳入了三個參數
for-in循環當中,爲defaultValue添加了name和domain的值,並修改了minApp的內容
函數調用時,參數的處理會變得更方便簡單,可是也要注意,爲了讓使用者清晰瞭解哪些參數是必須的,建議在函數前面添加合理註釋!ip
生活艱辛,代碼不易,但,不要忘記微笑!