HTML5學堂-碼匠:掌握JavaScript代碼的你,一定編寫封裝過函數,為了提升函數的控制性,必不可少的就是參數,必選可選的一大堆參數羅列出來,函數調用貌似變得麻煩起來~~~
Tips:
必選參數指的是必須要傳入實參的參數;
可選參數在函數中有默認值,如有傳入實參,則取實參的值,如果沒有傳入實參,則使用默認值。
函數的眾多參數問題
當一個函數既有必選參數,又有可選參數,在定義函數時,我們可能采取的方式是:無論參數是可選參數還是必選參數,都將參數羅列下來(通常按照先必選再可選的順序)
但是這樣的羅列方法,會導致一些問題的產生!
舉例來說:有一個功能函數h5course,name和domain為其必選參數,而minAPP和book為其可選參數,而我們如此定義函數:
此時,調用函數,需要傳入name、domain、book這三個參數,那么,問題來了!
由于在函數定義當中,book的參數位置位于minApp參數之后,在調用函數時,如果希望為book這個參數傳入值,就必須按照如下方式進行書寫:
h5course('name參數值', 'domain參數值', '', 'book參數值');
不難發現,當前第三個參數的處理就變得麻煩起來。于是乎,可能很多人會在函數中通過添加if判斷,來進行參數控制 ——
此時仍然存在這樣兩個問題:
第一,函數的調用者必須要了解函數內部的參數判斷方式,才能夠正確書寫“不需要的可選參數”
第二,在調用多個可選參數的函數時,調用代碼會變得很麻煩(當然你可以為函數添加注釋,降低使用時的難度)
更好的函數參數書寫方法!
面對如上的這些問題,下面這種方法,你值得擁有!
用對象替代掉原有的單個參數傳遞方式
函數內部使用arguments替換原有的形參
利用for-in循環,修改可選參數的默認值
一起來用此方法調整一下h5course函數
在此段代碼當中,傳入了三個參數
for-in循環當中,為defaultValue添加了name和domain的值,并修改了minApp的內容
函數調用時,參數的處理會變得更方便簡單,但是也要注意,為了讓使用者清晰了解哪些參數是必須的,建議在函數前面添加合理注釋!
來個“智力”測試?
生活艱辛,代碼不易,但,不要忘記微笑!