js进行函数调用时,除了指定的参数外,还创建一个隐含的对象——arguments。
一、arguments可以用arguments[index]这样的语法取值,拥有长度属性length。arguments对象存储的是实际传递给函数的参数,而不局限于函数声明所定义的参数列表,例如:
代码运行时会依次显示:1,2,1,2,3,4。函数定义了两个参数,但是在调用的时候传递了4个参数。
二、arguments的callee属性
它表示对函数对象本身的引用,这有利于实现无名函数的递归或者保证函数的封装性。例如:用递归来计算1到n的自然数之和:
在javascript中,不需要明确指出参数名,就能访问它们。如:
用arguments[0]可以访问第一个参数,如此类推。
利用arguments对象可以实现重载,利用arguments.length可以获取函数的参数个数,如下:
length 属性 (arguments)
返回调用程序传递给函数的实际参数数目。
[function.]arguments.length
可选项 function 参数是当前正在执行的 Function 对象的名称。
说明
当 Function 对象开始执行时,脚本引擎将 arguments 对象的 length 属性初始化为传递给该函数的实际参数数目。
示例
下面的例子演示了 arguments 对象的 length 属性的用法。要完全理解示例,请向该函数传递更多的参数:
arguments 属性为当前执行的 function 对象返回一个arguments 对象。function.argumentsfunction 参数是当前执行函数的名称,可以省略。说明通过 arguments 属性,函数可以处理可变数量的参数。 arguments 对象的 length 属性包含了传递给函数的参数的数目。对于arguments 对象所包含的单个参数,其访问方法与数组中所包含的参数的访问方法相同。示例下面的例子说明了 arguments 属性的用法:
0...n 属性返回一个 arguments 对象中的各个参数的实际值,相应的值是由一个正在执行的函数的 arguments 属性返回的。[function.]arguments[[0|1|2|...|n]]参数function可选项。当前正在执行的 Function 对象的名称。0, 1, 2, …, n必选项。0 到 n 范围内的非负整数,其中 0 代表第一个参数而 n 代表最后一个参数。最后参数 n 的值为 arguments.length-1。说明0 . . . n 属性所返回的值就是传递给正在执行的函数的实际值。尽管实际上并不是一个参数数组,您还是可以按照与访问数组元素的方法相同的方式访问组成 arguments 对象的各个参数。示例下面的例子演示了 arguments 对象的 0 . . . n 属性的用法。要完全理解以下例子,请向该函数传递一个或多个参数:
callee 属性返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。[function.]arguments.callee可选项 function 参数是当前正在执行的 Function 对象的名称。说明callee 属性是 arguments 对象的一个成员,仅当相关函数正在执行时才可用。callee 属性的初始值就是正被执行的 Function 对象。这允许匿名的递归函数。示例
.
arguments用来获取参数数量和值
callee:
返回正被执行的 Function 对象,也就是所指定的 Function 对象的正文。
alert(arguments.callee); 可以打印函数本身
alert(arguments.callee.length);//本身函数的数量
举个例子
















