javascript中的arguments對象


在js中一切都是對象,連函數也是對象,函數名其實是引用函數定義對象的變量。

1、什么是arguments?

這個函數體內的arguments非常特殊,實際上是所在函數的一個內置類數組對象,可以用數組的[i]和.length。

2、有什么作用?

js語法不支持重載!但可用arguments對象模擬重載效果。

arguments對象:函數對象內,自動創建的專門接收所有參數值得類數組對象。
arguments[i]: 獲得傳入的下標為i的參數值
arguments.length: 獲得傳入的參數個數!

重載:

  程序中可定義多個相同函數名,不同參數列表的函數,
  調用者不必區分每個函數的參數,
  執行時,程序根據傳入的參數個數,自動判斷選擇哪個函數執行。

例子如下:

// 1、如果用戶傳入一個參數,求平方
    function sum(a){
        console.log(a*a);
    }

    //如果用戶傳入兩個參數,就求和
    function sum(a,b){
        console.log(a+b);
    }
    sum(4); //
    sum(4,5); //

上述例子中本意是想讓同名函數sum()根據參數不同輸出不同結果,但是sum是函數名字,本質也是個變量,

第二個會覆蓋第一個,所以上述的正確輸出答案是:NaN,9.所以這樣顯然不可以。

如果用arguments,就簡單多了。

如下2個例子:

//2、
    function calc(){
        //如果用戶傳入一個參數,求平方
        if(arguments.length==1){
            console.log(arguments[0]*arguments[0]);
        }else if(arguments.length==2){
        //如果用戶傳入兩個參數,就求和
            console.log(arguments[0]+arguments[1]);
        }
    }
    calc(4); //16
    calc(4,5); //9
/*3、無論用戶傳入幾個數字,都可以求和*/
    function add(){
        //arguments:[]
        //遍歷arguments中每個元素,並累加
        for(var i=0,sum=0;i<arguments.length;sum+=arguments[i++]);
        return sum;//返回和
    }

    console.log(add(1,2,3)); //6
    console.log(add(1,2,3,4,5,6)); //21

這就是JS利用arguments重載的效果,簡單理解就是一個函數重復利用.

arguments.length是有實參決定,即函數調用時候里面的參數個數決定!


免責聲明!

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



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