摘要:為什么結(jié)果是,而不是對(duì)于函數(shù)來說,實(shí)參和形參是一一對(duì)應(yīng)的,即,我們的代碼只要求參數(shù)運(yùn)算,那么結(jié)果自然是。為什么不會(huì)出錯(cuò)因?yàn)楫?dāng)我們不給函數(shù)傳遞這個(gè)參數(shù)的時(shí)候,這個(gè)參數(shù)為,這時(shí)候,為,因?yàn)檗D(zhuǎn)換為數(shù)值類型之后是。
js中怎么定義一個(gè)函數(shù)?
// 定義一個(gè)函數(shù),求出參數(shù)中的最小值 function min(a,b,c,d...) { //函數(shù)的代碼 }上面的函數(shù)怎么調(diào)用?
min(1,2,3,4,5,6,7...);定義一個(gè)求兩個(gè)數(shù)中最小值的函數(shù)
function min(a, b) { return a>b? b:a; } 調(diào)用 min(1,2);
1 函數(shù)的形參是什么?
函數(shù)的形參是定義該函數(shù)時(shí),你設(shè)置的函數(shù)參數(shù)個(gè)數(shù)
2 min函數(shù)的形參有幾個(gè)?
2個(gè),a和b
3 min函數(shù)的實(shí)參有幾個(gè)?
調(diào)用函數(shù)時(shí)傳遞幾個(gè)就是有幾個(gè),上面調(diào)用時(shí),我們傳遞了 1和2 ,那么實(shí)參個(gè)數(shù)就是兩個(gè)
function min(a, b) { return a>b? b:a; } var result=min(1,2,-1,4) console.log(result) //輸出 1
以上代碼說明,我們可以傳遞的參數(shù)大于形參個(gè)數(shù),且不會(huì)出錯(cuò)。
為什么結(jié)果是1,而不是-1?
對(duì)于函數(shù)來說,實(shí)參和形參是一一對(duì)應(yīng)的,即a=1,b=2,我們的代碼只要求a,b參數(shù)運(yùn)算,那么結(jié)果自然是1。
答案是,我們的另外兩個(gè)參數(shù)被放在了函數(shù)的arguments中,我們來看看arguments是個(gè)什么
function min(a,b) { console.log(arguments); return a>b? b:a; } var result=min(2,6,90,10) console.log(result) //輸出 2
原來我多傳的參數(shù)在arguments中。
實(shí)參有多少個(gè),只要調(diào)用 arguments.length即可,當(dāng)前有4個(gè)
函數(shù)的形參個(gè)數(shù)能不能知道?
當(dāng)然可以 , 形參個(gè)數(shù)就是 min.length
arguments看著像是個(gè)數(shù)組,不過,它可并不是一個(gè)數(shù)組哦,它是個(gè)object類型的,
怎么取到所有的參數(shù),就不言而喻了
for(var i in arguments){ console.log(arguments[i]) }
說了這么半天,這玩意兒有啥用處?
//兩個(gè)數(shù)字中的最小值 function min(a,b){ return Math.min(a,b); } min(1,2); //四個(gè)數(shù)字中的最小值 function min(a, b, c, d){ return Math.min(a,b,c,d); } min(1, 2,3,4); //6個(gè)數(shù)字中的最小值 function min(a, b, c, d,e,f){ return Math.min(a, b, c, d,e, f); } min(1, 2,3,4,5,6); //n個(gè)數(shù)字中的最小值 function min(a, b, c, d,e,f,...n){ return Math.min(a, b, c, d,e, f,...n); } min(1, 2,3,4,5,6,...n); //隨著我們要比較的數(shù)字的增多,我的函數(shù)形參數(shù)目也越來越多, //有了arguments這個(gè)對(duì)象,形參數(shù)目不就可以不寫了么,像這樣 function min(){ var res=arguments[0] for(var i in arguments){ if(i==0) continue; res=res>arguments[i]?arguments[i]:res; } return res; } min(1, 2,3,4); //代碼更精簡點(diǎn),還可以這樣 function min(){ return Math.min.apply(this,arguments); } min(1, 2,3,4,-1,2,0-3);//-3那么我們可以少傳么?
function min(a, b) { return a>b? b:a; } var result=min(1) console.log(result) //輸出 1
以上代碼說明,我們可以傳遞的參數(shù)小于形參個(gè)數(shù),且不會(huì)出錯(cuò)。
為什么不會(huì)出錯(cuò)?因?yàn)楫?dāng)我們不給min函數(shù)傳遞 b 這個(gè)參數(shù)的時(shí)候,b這個(gè)參數(shù)為 undefined,這時(shí)候,a>undefined 為false,因?yàn)閎轉(zhuǎn)換為數(shù)值類型之后是 NaN。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/107152.html
摘要:事實(shí)上,滿足一定條件的對(duì)象都能被方法轉(zhuǎn)換成數(shù)組。繼承于的很大原因是不需要這四個(gè)方法。而在非嚴(yán)格模式下,兩個(gè)會(huì)互相影響。數(shù)組與類數(shù)組對(duì)象數(shù)組具有一個(gè)基本特征索引。這是一般對(duì)象所沒有的。是利用對(duì)象的鍵值對(duì)存取數(shù)據(jù),而卻是利用數(shù)組的索引。 1. 什么是 arguments MDN 上解釋: arguments 是一個(gè)類數(shù)組對(duì)象。代表傳給一個(gè)function的參數(shù)列表。 我們先用一個(gè)例子直觀了...
摘要:事實(shí)上,滿足一定條件的對(duì)象都能被方法轉(zhuǎn)換成數(shù)組。繼承于的很大原因是不需要這四個(gè)方法。而在非嚴(yán)格模式下,兩個(gè)會(huì)互相影響。數(shù)組與類數(shù)組對(duì)象數(shù)組具有一個(gè)基本特征索引。這是一般對(duì)象所沒有的。是利用對(duì)象的鍵值對(duì)存取數(shù)據(jù),而卻是利用數(shù)組的索引。 1. 什么是 arguments MDN?上解釋: arguments 是一個(gè)類數(shù)組對(duì)象。代表傳給一個(gè)function的參數(shù)列表。 我們先用一個(gè)例子直觀了...
摘要:以上簡單總結(jié)了下對(duì)執(zhí)行上下文和變量對(duì)象的理解,主要在于記錄總結(jié)一下學(xué)習(xí)成果,目前文章的水平實(shí)在不敢談分享。 執(zhí)行上下文(Execution Context) 文章同步到github javaScript中的執(zhí)行上下文和變量對(duì)象 JavaScript代碼執(zhí)行的過程,包括編譯和執(zhí)行兩個(gè)階段,編譯就是通過詞法分析,構(gòu)建抽象抽象語法樹,并編譯成機(jī)器識(shí)別的指令,在JavaScript代碼編譯階段...
摘要:參數(shù)引用函數(shù)的上下文,函數(shù)上下文來自于等面向?qū)ο笳Z言,中的依賴于函數(shù)聲明。沒有重載函數(shù)沒有簽名,因?yàn)槠鋮?shù)是由包含零或多個(gè)值的數(shù)組來表示的。這就是重載函數(shù)。重載函數(shù)常用來實(shí)現(xiàn)功能類似而所處理的數(shù)據(jù)類型不同的問題。 1 函數(shù)參數(shù) 函數(shù)的實(shí)參和形參個(gè)數(shù)可以不等,之所以會(huì)這樣,原因是 ECMAScript 中的參數(shù)在內(nèi)部是用一個(gè)數(shù)組來表示的。函數(shù)接收到的始終都是這個(gè)數(shù)組,而不關(guān)心數(shù)組中包含哪...
摘要:參數(shù)引用函數(shù)的上下文,函數(shù)上下文來自于等面向?qū)ο笳Z言,中的依賴于函數(shù)聲明。沒有重載函數(shù)沒有簽名,因?yàn)槠鋮?shù)是由包含零或多個(gè)值的數(shù)組來表示的。這就是重載函數(shù)。重載函數(shù)常用來實(shí)現(xiàn)功能類似而所處理的數(shù)據(jù)類型不同的問題。 1 函數(shù)參數(shù) 函數(shù)的實(shí)參和形參個(gè)數(shù)可以不等,之所以會(huì)這樣,原因是 ECMAScript 中的參數(shù)在內(nèi)部是用一個(gè)數(shù)組來表示的。函數(shù)接收到的始終都是這個(gè)數(shù)組,而不關(guān)心數(shù)組中包含哪...
閱讀 1833·2023-04-26 01:55
閱讀 1096·2021-09-30 09:47
閱讀 1689·2019-08-30 15:54
閱讀 754·2019-08-30 15:53
閱讀 709·2019-08-30 15:52
閱讀 1151·2019-08-30 15:44
閱讀 2426·2019-08-30 14:06
閱讀 1073·2019-08-29 16:39