首頁  >  文章  >  web前端  >  參數及參數.callee

參數及參數.callee

巴扎黑
巴扎黑原創
2016-11-25 09:38:551055瀏覽

首先有一個JavaScript函數

 程式碼 

<span style="font-family: &#39;courier new&#39;, courier;">function test(a, b, c, d) {  
    return a + b;  
}</span>

在JavaScript中呼叫一個函數的實參個數可以和被呼叫函數的形參個數不匹配,要求並沒有像java那麼嚴格,因為在ECMAScript中的參數在內部是用一個數組來表示的,函數被調用的時候接收到的始終是這個數組,而不關心數組中包含包含哪些參數,甚至是沒有元素也無所謂

Js代碼  

<span style="font-family: &#39;courier new&#39;, courier;">function test(a, b, c, d) {  
    return a + b;  
}

console. log(test(10, 20));  

  

這樣的程式碼在JavaScript中是不會報錯的,同時在JavaScript中我們可以透過下列程式碼取得實參及形參的個數

Js程式碼  

<span style="font-family: &#39;courier new&#39;, courier;">function test(a, b, c, d) {  
    console.log(test.length);//这里获得的是形参的个数  
    console.log(arguments.length);//这里获得的是实参的个数,这段代码必须放在函数内部  
}

console.log(test(10, 20));  

同時有類似的物件 

<span style="font-family: &#39;courier new&#39;, courier;">function test2(num) {  
    if(num <= 1) return 1;  
    else return num*arguments.callee(num-1);  
}  
  
console.log(test2(5));</span>

若將arguments.callee(num-1)改為test2(num-1),會在下列呼叫中會報錯

Js程式碼  

<span style="font-family: &#39;courier new&#39;, courier;">var F = test2;  
test2 = null;  
console.log(F(5));</span>

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn