在一个函数体内,标识符argumens具有特殊意义。它是引用arguments对象的一个特殊属性。Arguments对象是一个类似数组的对象,可以按照数目获取传递给函数的参数值。Argument对象也定义了callee属性。
arguments对象还为JavaScript函数开发了一个项重要的可能性,即可以编写函数使之能够使用任意数目的实际参数。 下面是一个判断任意个参数中的最大值的例子:
function max( /*...*/){ var m=Number.NEGATIVE_INFINITY; for(var i=0;i<arguments.length;i++){ if(arguments[i]>m) { m=arguments[i]; } } return m; }
像这样能够接受任意数目的参数的函数叫做可变参数函数。
记住:arguments并非真正的数组,他是一个Arguments对象。
属性callee
除了数组元素,Arguments对象还顶一个callee属性,用来引用当前正在执行的函数。这个属性没有太大的用处,但它可以用来允许对未命名的函数递归地调用自身。下面是一个为名的函数直接量,用于计算阶乘:
funciton (x) { if(x<=1) return 1; return x* arguments.callee(x-1); }