递归就是调用自身,即自己调用自己的函数;
递归阶乘函数
function factorial(num){
if(num<1){
return 1;
}else{
return num*factorial(num-1); //调用自身
}
}
console.log(factorial(5));
改进:
function factorial(num){
if(num<1){
return 1;
}else{
return num*arguments.callee(num-1); //arguments.callee是一个指向正在执行的函数的指针
}
}
var anotherFactorial=factorial;
factorial=null;
console.log(anotherFactorial(5));
'use strict' //严格模式
在严格模式下,通过脚本访问arguments.callee 访问这个属性会出错
改进:
var factorial=(function f(num){
if(num<1){
return 1;
}else{
return num*f(num-1);
}
});
var anotherFactorial=factorial;
factorial=null;
console.log(anotherFactorial(6));