国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript中的函數與arguments

Baoyuan / 2715人閱讀

摘要:為什么結果是,而不是對于函數來說,實參和形參是一一對應的,即,我們的代碼只要求參數運算,那么結果自然是。為什么不會出錯因為當我們不給函數傳遞這個參數的時候,這個參數為,這時候,為,因為轉換為數值類型之后是。

js中怎么定義一個函數?
// 定義一個函數,求出參數中的最小值
 function min(a,b,c,d...) {
  //函數的代碼
}
上面的函數怎么調用?
min(1,2,3,4,5,6,7...);
定義一個求兩個數中最小值的函數
function min(a, b) {
  return a>b? b:a;
}

調用

min(1,2);

1 函數的形參是什么?
函數的形參是定義該函數時,你設置的函數參數個數

2 min函數的形參有幾個?
2個,a和b

3 min函數的實參有幾個?
調用函數時傳遞幾個就是有幾個,上面調用時,我們傳遞了 1和2 ,那么實參個數就是兩個

問?既然實參傳遞幾個就是有幾個,調用函數時,我傳遞的實參個數能不能大于形參個數?
function min(a, b) {
  return a>b? b:a;
}
var result=min(1,2,-1,4)
console.log(result) //輸出 1

以上代碼說明,我們可以傳遞的參數大于形參個數,且不會出錯。

為什么結果是1,而不是-1?
對于函數來說,實參和形參是一一對應的,即a=1,b=2,我們的代碼只要求a,b參數運算,那么結果自然是1。

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

答案是,我們的另外兩個參數被放在了函數的arguments中,我們來看看arguments是個什么

function min(a,b) {
  console.log(arguments);
  return a>b? b:a;
}

var result=min(2,6,90,10)
console.log(result) //輸出 2

原來我多傳的參數在arguments中。
實參有多少個,只要調用 arguments.length即可,當前有4個

函數的形參個數能不能知道?
當然可以 , 形參個數就是 min.length

arguments看著像是個數組,不過,它可并不是一個數組哦,它是個object類型的,

怎么取到所有的參數,就不言而喻了

for(var i in arguments){
    console.log(arguments[i])
 }

說了這么半天,這玩意兒有啥用處?

//兩個數字中的最小值
function min(a,b){
  return Math.min(a,b);
}
min(1,2);
//四個數字中的最小值
function min(a, b, c, d){
  return Math.min(a,b,c,d);
}
min(1, 2,3,4);
//6個數字中的最小值
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個數字中的最小值
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);
//隨著我們要比較的數字的增多,我的函數形參數目也越來越多,
//有了arguments這個對象,形參數目不就可以不寫了么,像這樣
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);

//代碼更精簡點,還可以這樣
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

以上代碼說明,我們可以傳遞的參數小于形參個數,且不會出錯。
為什么不會出錯?因為當我們不給min函數傳遞 b 這個參數的時候,b這個參數為 undefined,這時候,a>undefined 為false,因為b轉換為數值類型之后是 NaN。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/107152.html

相關文章

  • JavaScript arguments 對象全面介紹

    摘要:事實上,滿足一定條件的對象都能被方法轉換成數組。繼承于的很大原因是不需要這四個方法。而在非嚴格模式下,兩個會互相影響。數組與類數組對象數組具有一個基本特征索引。這是一般對象所沒有的。是利用對象的鍵值對存取數據,而卻是利用數組的索引。 1. 什么是 arguments MDN 上解釋: arguments 是一個類數組對象。代表傳給一個function的參數列表。 我們先用一個例子直觀了...

    HackerShell 評論0 收藏0
  • JavaScript arguments 對象詳解

    摘要:事實上,滿足一定條件的對象都能被方法轉換成數組。繼承于的很大原因是不需要這四個方法。而在非嚴格模式下,兩個會互相影響。數組與類數組對象數組具有一個基本特征索引。這是一般對象所沒有的。是利用對象的鍵值對存取數據,而卻是利用數組的索引。 1. 什么是 arguments MDN?上解釋: arguments 是一個類數組對象。代表傳給一個function的參數列表。 我們先用一個例子直觀了...

    codergarden 評論0 收藏0
  • JavaScript中的執行上下文和變量對象

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

    why_rookie 評論0 收藏0
  • JavaScript函數式編程(0):函數基礎 arguments、this、apply()、cal

    摘要:參數引用函數的上下文,函數上下文來自于等面向對象語言,中的依賴于函數聲明。沒有重載函數沒有簽名,因為其參數是由包含零或多個值的數組來表示的。這就是重載函數。重載函數常用來實現功能類似而所處理的數據類型不同的問題。 1 函數參數 函數的實參和形參個數可以不等,之所以會這樣,原因是 ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪...

    陳偉 評論0 收藏0
  • JavaScript函數式編程(0):函數基礎 arguments、this、apply()、cal

    摘要:參數引用函數的上下文,函數上下文來自于等面向對象語言,中的依賴于函數聲明。沒有重載函數沒有簽名,因為其參數是由包含零或多個值的數組來表示的。這就是重載函數。重載函數常用來實現功能類似而所處理的數據類型不同的問題。 1 函數參數 函數的實參和形參個數可以不等,之所以會這樣,原因是 ECMAScript 中的參數在內部是用一個數組來表示的。函數接收到的始終都是這個數組,而不關心數組中包含哪...

    liuchengxu 評論0 收藏0

發表評論

0條評論

Baoyuan

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<