Javascript arguments詳解


  今天我們來看看arguments對象及屬性。arguments對象不能顯式創建,arguments對象只有函數開始時才可用。函數的 arguments 對象並不是一個數組,訪問單個參數的方式與訪問數組元素的方式相同。索引 n 實際上是arguments 對象的 0…n 屬性的其中一個參數。

1 function add(a,b){
2     console.log(typeof arguments);
3     for(var attr in arguments){
4         console.log(attr+":"+arguments[attr]);
5     }
6     return a+b;
7 }
8 
9 add(10,20)

  

  通過輸出結果看到,arguments其實是一個對象,而不是一個數組,而這個數組有2個屬性,屬性名為0和1,其值分別為10和20

 

  在JavaScript中,參數列表分為形參和實參。形參即為定義函數時指定的參數,實參為調用函數時指定的參數。例如在上面例子中可以通過

alert(add(10))

  來調用函數,這里只指定了一個參數,即實參個數為1,形參個數為2。在JavaScript中,並沒有要求實參個數必須和形參個數相同。上面的代碼同樣可以執行。只是輸出NaN

 

  在實際中,我們可以這樣,先判斷參數個數

 1 function add(a,b){
 2     
 3     //add.length也可以獲取形參個數,但實際中用arguments.callee.length
 4     if(arguments.length==arguments.callee.length){
 5         return a+b;
 6     }else{
 7         return "參數錯誤";
 8     }
 9     
10 }

  arguments.length:獲取實參個數

  arguments.callee.length:獲取形參個數

       arguments.callee:指帶函數本身

 

  arguments常用於遞歸操作

  例如,求一個1到n的和

 1 function fn(n){
 2     
 3     if(n==1){
 4         return 1;
 5     }else{
 6         return n+arguments.callee(n-1);
 7     }
 8 }
 9 
10 alert(fn(100))

  結果為5050


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM