JS一步一步之Arguments

1、arguments[]數組只在函數體內定義。在函數體內,arguments引用該函數的Arguments對象,該對象有帶有編號的屬性,並作爲一個存放傳遞給函數的所有參數的數組。標識符arguments本質是一個局部變量,在每個函數中都會被自動聲明並被初始化。它只在函數體中才能引用Arguments對象,在全局代碼中沒有定義。

function arg(a,b){
    if(arguments[0]){
        alert(arguments[0]);
    }
    if(arguments[1]){
        alert(arguments[1]);
    }
}

2、Arguments對象只在函數體中定義。雖然技術上說,它不是數組,但Arguments對象有帶編號的屬性,這些屬性可以作爲數組元素,而且他有length屬性,該屬性聲明瞭數組元素的個數。它的元素是作爲參數傳遞給函數的值。元素0是第一個參數,所有作爲參數傳遞的值都會成爲Arguments對象的數組元素,無論函數聲明中是否有這些參數。

3、arguments.callee屬性引用當前正在運行的函數(無論函數是否命名,都可以使函數引用自身)。該屬性只有在函數體內被定義。

var fac=function(a){
    if(a<2)
        return 1;
    else
        return a*arguments.callee(a-1);
}

var y=fac(5);

4、arguments.length屬性 傳遞給當前函數的個數。這個屬性聲明的是實際傳遞給函數的參數個數

function check(args){
    var actual=args.length;
    var expected=args.callee.length;
    if(actual != expected){
        throw new Error("Wrong number of arguments:extected: "+expected +"; actually passed: "+actual);
    }
}

function f(x,y,z){
    check(arguments);
    return x+y+z;
}


參照:JavaScript權威指南

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章