Javascript中的arguments.
arguments
1.arguments.callee
2.function.caller
arguments.callee(指向函数引用)
例如
function test() {
console.log(arguments.callee);
console.log(test);
}
执行test()
输出的东西是一样的,都是test的函数引用。
那么这个arguments.callee
有什么用呢?
例如:现在要用到一个20的阶乘,因为运算量较大,所以使用到立即执行函数。
var i = (function 函数名(n) {
if(n == 1) {
return 1;
}
else{
return n * 函数名(n - 1);
}
}(20));
仔细看这段代码,
立即执行函数是没有函数名(函数引用)的,
所以要实现立即执行函数的阶乘要用到arguments.callee
该属性是一个指针,指向拥有这个 arguments
对象的函数体。
function.caller(函数自有的属性)
返回调用指定函数的函数。
function test() {
demo();
}
function demo() {
console.log(demo.caller);
}
test();
在test里执行的demo,所以返回的是test函数。
改特性是非标准的,请尽量不要在生产环境中使用它。
在ecmascript5标准中arguments.callee和function.caller是不允许使用的。