在每一个函数中,都有个名为 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]); }
}