递归函数是一个函数通过名字调用自身的情况下构成的,例如:
function factorial(num){
if(num<1){
return 1;
}else{
return num*factorial(num1);
}
}
这是一个经典的递归阶乘函数,虽然表面上看没有什么问题,但下面的代码可能导致它出错。
var anothorFactorial = factorial;
factorial = null;
alert(anotherFactorial(4));//报错
以上代码先把factorial()函数保存在变量anotherFactorial中,然后将factorial变量设置为null,结果指向原始函数的引用只剩下一个。但是接下来调用anothe