摘要:學(xué)堂碼匠掌握代碼的你,一定編寫封裝過函數(shù),為了提升函數(shù)的控制性,必不可少的就是參數(shù),必選可選的一大堆參數(shù)羅列出來,函數(shù)調(diào)用貌似變得麻煩起來必選參數(shù)指的是必須要傳入實參的參數(shù)可選參數(shù)在函數(shù)中有默認值,如有傳入實參,則取實參的值,如果沒有傳入
HTML5學(xué)堂-碼匠:掌握JavaScript代碼的你,一定編寫封裝過函數(shù),為了提升函數(shù)的控制性,必不可少的就是參數(shù),必選可選的一大堆參數(shù)羅列出來,函數(shù)調(diào)用貌似變得麻煩起來~~~
Tips:
必選參數(shù)指的是必須要傳入實參的參數(shù);
可選參數(shù)在函數(shù)中有默認值,如有傳入實參,則取實參的值,如果沒有傳入實參,則使用默認值。
當(dāng)一個函數(shù)既有必選參數(shù),又有可選參數(shù),在定義函數(shù)時,我們可能采取的方式是:無論參數(shù)是可選參數(shù)還是必選參數(shù),都將參數(shù)羅列下來(通常按照先必選再可選的順序)
但是這樣的羅列方法,會導(dǎo)致一些問題的產(chǎn)生!
舉例來說:有一個功能函數(shù)h5course,name和domain為其必選參數(shù),而minAPP和book為其可選參數(shù),而我們?nèi)绱硕x函數(shù):
此時,調(diào)用函數(shù),需要傳入name、domain、book這三個參數(shù),那么,問題來了!
由于在函數(shù)定義當(dāng)中,book的參數(shù)位置位于minApp參數(shù)之后,在調(diào)用函數(shù)時,如果希望為book這個參數(shù)傳入值,就必須按照如下方式進行書寫:
h5course("name參數(shù)值", "domain參數(shù)值", "", "book參數(shù)值");
不難發(fā)現(xiàn),當(dāng)前第三個參數(shù)的處理就變得麻煩起來。于是乎,可能很多人會在函數(shù)中通過添加if判斷,來進行參數(shù)控制 ——
此時仍然存在這樣兩個問題:
第一,函數(shù)的調(diào)用者必須要了解函數(shù)內(nèi)部的參數(shù)判斷方式,才能夠正確書寫“不需要的可選參數(shù)”
第二,在調(diào)用多個可選參數(shù)的函數(shù)時,調(diào)用代碼會變得很麻煩(當(dāng)然你可以為函數(shù)添加注釋,降低使用時的難度)
面對如上的這些問題,下面這種方法,你值得擁有!
用對象替代掉原有的單個參數(shù)傳遞方式
函數(shù)內(nèi)部使用arguments替換原有的形參
利用for-in循環(huán),修改可選參數(shù)的默認值
一起來用此方法調(diào)整一下h5course函數(shù)
在此段代碼當(dāng)中,傳入了三個參數(shù)
for-in循環(huán)當(dāng)中,為defaultValue添加了name和domain的值,并修改了minApp的內(nèi)容
函數(shù)調(diào)用時,參數(shù)的處理會變得更方便簡單,但是也要注意,為了讓使用者清晰了解哪些參數(shù)是必須的,建議在函數(shù)前面添加合理注釋!
歡迎溝通交流~HTML5學(xué)堂
來個“智力”測試?生活艱辛,代碼不易,但,不要忘記微笑!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/89081.html
摘要:特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進步。 特意對前端學(xué)習(xí)資源做一個匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進步。 本以為自己收藏的站點多,可以很快搞定,沒想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補充。有錯誤的地方,還請斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會及時更新,平時業(yè)務(wù)工作時也會不定期更...
摘要:作為函數(shù)式編程語言,帶來了很多語言上的有趣特性,比如柯里化和反柯里化。而反柯里化,從字面講,意義和用法跟函數(shù)柯里化相比正好相反,擴大適用范圍,創(chuàng)建一個應(yīng)用范圍更廣的函數(shù)。作為函數(shù)式編程語言,JS帶來了很多語言上的有趣特性,比如柯里化和反柯里化。 可以對照另外一篇介紹 JS 柯里化 的文章一起看~ 1. 簡介 柯里化,是固定部分參數(shù),返回一個接受剩余參數(shù)的函數(shù),也稱為部分計算函數(shù),目的是為了縮...
摘要:大多數(shù)待遇豐厚的開發(fā)職位都要求開發(fā)者精通多線程技術(shù)并且有豐富的程序開發(fā)調(diào)試優(yōu)化經(jīng)驗,所以線程相關(guān)的問題在面試中經(jīng)常會被提到。將對象編碼為字節(jié)流稱之為序列化,反之將字節(jié)流重建成對象稱之為反序列化。 JVM 內(nèi)存溢出實例 - 實戰(zhàn) JVM(二) 介紹 JVM 內(nèi)存溢出產(chǎn)生情況分析 Java - 注解詳解 詳細介紹 Java 注解的使用,有利于學(xué)習(xí)編譯時注解 Java 程序員快速上手 Kot...
閱讀 2953·2021-11-24 09:39
閱讀 2861·2021-09-29 09:34
閱讀 3557·2021-09-24 10:23
閱讀 1741·2021-09-22 15:41
閱讀 1693·2019-08-30 15:55
閱讀 3510·2019-08-30 13:58
閱讀 2618·2019-08-30 13:11
閱讀 1666·2019-08-29 12:31