複製鏈接
請複製以下鏈接發送給好友

arguments

鎖定
Arguments是個類似數組但不是數組的對象,説他類似數組是因為其具備數組相同的訪問性質及方式,能夠由arguments[n]來訪問對應的單個參數的值,並擁有數組長度屬性length。還有就是arguments對象存儲的是實際 傳遞給函數的參數,而不侷限於函數聲明所定義的參數列表,而且不能顯式創建 arguments 對象。
外文名
arguments
性    質
科學
類    別
計算機學

arguments説明

JavaScript中,arguments是對象的一個特殊屬性。arguments對象就像數組,但是它卻不是數組。
argument 對象包含了函數調用的參數數組,通過這種方式你可以很方便的找到最後一個參數的值。 [1] 
1:arguments是收到的實參副本
在詞法分析中, 首先按形參形成AO的屬性,值為
當實參傳來時, 再修改AO的相應屬性.
2:並把所有收到實參收集起來,放到一個arguments對象裏
t(a,b,c){},
調用時: t(1,2,3,4,5) 5個參數
此時 , AO屬性只有a,b,c,3個屬性, arguments裏有1,2,3,4,5, 所有的值

arguments屬性

length, 獲取arguments對象的長度。
callee, 引用當前正在執行的函數。

arguments舉例

arguments參數的長度

window.onload = function(){
abc(1,2,3);
}
function abc(){
//雖然這裏沒有引用參數,但是arguments仍能捕獲到
alert(arguments.length);
}//output 3

arguments隱藏的參數

function abc(x,y){
alert(x+","+y);//output:1,2
for(var i=0;i<arguments.length;i++){
alert(" "+arguments[i]);//output:1 2 3
}
}

arguments改變參數值

function abc(x,y,z){
arguments[2] = "hello";
for(var i=0;i<arguments.length;i++){
alert(" "+arguments[i]);
}
}//output: 1 2 hello

arguments遞歸

求1到n的自然數之和
function add(n){
if(n == 1) return 1;
else return n + arguments.callee(n-1);
}
其實callee對於沒有命名的函數調用自身時就是一個福音了,比如對於沒有命名的函數求1到n自然數之和
var result = function(x){
if(x == 1) return 1;
return x+arguments.callee(x-1);
}
參考資料