javascript中的arguments

 在每一個函數中,都有個名爲 arguments 的變量,它以相似數組的形式保存了當前調用的參數。而它實際上並非個數組,使用 typeof arguments
語句嘗試會返回「object」(對象),因此它不能像 Array 同樣使用 push 和 pop
等方法。即使如此,仍然能夠使用下標以及長度屬性(length)獲取它的值。javascript

在JavaScript中,arguments是對象的一個特殊屬性。arguments對象就像 數組,可是它卻不是數組。
1:arguments是收到的實參副本   在詞法分析中, 首先按形參造成AO的屬性,值爲undefined   當實參傳來時, 再修改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, 全部的值

1屬性

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

2舉例

參數的長度

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

隱藏的參數

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

改變參數值

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

 另外一個例子:

js arguments對象html

在javascript中,不須要明確指出參數名,就能訪問它們。如:
function hi(){
if(arguments[0]=="andy"){    
  return; }
alert(arguments[0]); }
用arguments[0]能夠訪問第一個參數,如此類推。
利用arguments對象能夠實現重載,利用arguments.length能夠獲取函數的參數個數,以下:
function hi(){
if(arguments.length==1)
{ alert(arguments[0]); }
else if(arguments.length==2)
{alert(arguments[0] + arguments[1]); }
}
相關文章
相關標籤/搜索