callee 指向正在执行的函数的指针。
递归例子
var factorial= function(num) {
if(num<=1) {
return 1
} else {
return num * factorial(num - 1)
}
}
var anotherFactorial = factorial;
factorial = null;
anotherFactorial(4) //factorial is not a function
这里的factorial指针指向function(num),
anotherFactorial指针指向function(num),
factorial = null时,factorial指针指向null;anotherFactorial的指针依旧指向function(num);
所以执行return num * factorial(num - 1)时,factorial 函数找不到。
var factorial= function(num) {
if(num<=1) {
return 1
} else {
return num * arguments.callee(num - 1)
}
}
var anotherFactorial = factorial;
factorial = null;
anotherFactorial(4) //24
arguments.callee将当前指针指向当前正在执行的函数。
ƒ (num) {
if(num<=1) {
return 1
} else {
console.log(arguments.callee)
return num * arguments.callee(num - 1)
}
}