1、使用arguments.callee,arguments.callee 是一个指向正在执行的函数的指针,可以用它来实现对函数的递归调用。
function factorial(num){
if(num<=1){
return 1;
}else{
return num*arguments.callee(num-1);
}
}
但是!在严格模式下,使用arguments.callee会导致错误。所以我们换第二种方法实现:
2.创建一个命名函数表达式
var factorial = (function f(num){
if(num<=1){
return 1;
}
else{
return num*f(num-1);
}
})
这样在严格和非严格模式下都行得通。