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权威指南
原文地址:http://zhiaidql.blog.51cto.com/6965969/1583195