来看一个经典的递归函数
function factorical(num){
if(num <= 1){
return 1;
}else{
return num * factorical(num - 1);
}
}
一般情况下这个递归函数是不会出错的,但是看下面一种情况:
var anthorFunction = factorical;
factorical = null;
anthorFunction(4);//这里是会出错的
因为指向原函数的指针就剩下一个,factorical已经不指向原函数,在函数体里调用时出错,如何避免这种情况,
可以使用arguments.callee()来代替函数名,就像这样 return num * arguments.callee(num -1);