argument代表当前函数的参数数组
arguments.callee表示引用当前正在执行的函数,或者说是调用arguments.callee的函数对象的引用,它给匿名函数提供了一种自我引用的方式。、
var aa = function() { alert(aa === arguments.callee);}aa();
执行上述代码,可以看到alter出来的结果是true,注意,此处用的是“===”,就是说方法aa与arguments.callee对象类型和值都相等。
上面讲述了概念,下面讲arguments.callee的用途。
一般来说,它会和匿名函数一起结合来用。
//普通实现
function fun2(n) {
if (n > 1) {
return n * fun2(n -1);
}
return 1;
}
var r1 = fun2(3);
//使用匿名函数
var r2 = (function(n) {
if (n > 1) {
return n * arguments.callee(n -1);
}
return 1;
})
时间: 2024-12-12 22:56:08