arguments、callee、caller
arguments
arguments 是函数调用时,创建的一个伪数组,它存储实际传递给函数的参数。
arguments 是一个对象,它有两个常用的属性:length 、callee 。
需要注意的是 arguments 并不局限于函数声明的参数列表,举例如下
1 | function obj(){ |
callee
callee 是 arguments 对象的一个成员,它的值为“正被执行的Function对象”。
arguments.callee 在哪一个函数中运行,它就代表哪一个函数。 一般用在匿名函数中。
在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调。
这时就可以用arguments.callee来代替匿名的函数。
1 | (function(n){ |
上述代码用匿名函数实现的计算10的阶乘。用arguments.calle代替匿名函数。
caller
caller 是函数对象的一个属性,该属性保存着调用当前函数的函数。包含闭包,如果没有父函数,则为null。
1 | //child是parent内的函数,并在parent内执行child |
在控制台会得到如图结果