成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JavaScript中的函數(shù)與arguments

Baoyuan / 2720人閱讀

摘要:為什么結(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è)

問?既然實(shí)參傳遞幾個(gè)就是有幾個(gè),調(diào)用函數(shù)時(shí),我傳遞的實(shí)參個(gè)數(shù)能不能大于形參個(gè)數(shù)?
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。

問題來了,我們傳遞了4個(gè)參數(shù),a,b用了,那么-1,4 這兩個(gè)參數(shù)去哪了,我能不能拿到?

答案是,我們的另外兩個(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

相關(guān)文章

  • JavaScript arguments 對(duì)象全面介紹

    摘要:事實(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è)例子直觀了...

    HackerShell 評(píng)論0 收藏0
  • JavaScript arguments 對(duì)象詳解

    摘要:事實(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è)例子直觀了...

    codergarden 評(píng)論0 收藏0
  • JavaScript中的執(zhí)行上下文和變量對(duì)象

    摘要:以上簡單總結(jié)了下對(duì)執(zhí)行上下文和變量對(duì)象的理解,主要在于記錄總結(jié)一下學(xué)習(xí)成果,目前文章的水平實(shí)在不敢談分享。 執(zhí)行上下文(Execution Context) 文章同步到github javaScript中的執(zhí)行上下文和變量對(duì)象 JavaScript代碼執(zhí)行的過程,包括編譯和執(zhí)行兩個(gè)階段,編譯就是通過詞法分析,構(gòu)建抽象抽象語法樹,并編譯成機(jī)器識(shí)別的指令,在JavaScript代碼編譯階段...

    why_rookie 評(píng)論0 收藏0
  • JavaScript函數(shù)式編程(0):函數(shù)基礎(chǔ) arguments、this、apply()、cal

    摘要:參數(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ù)組中包含哪...

    陳偉 評(píng)論0 收藏0
  • JavaScript函數(shù)式編程(0):函數(shù)基礎(chǔ) arguments、this、apply()、cal

    摘要:參數(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ù)組中包含哪...

    liuchengxu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<