sam*_*sam 1 javascript factorial
不能把我的头包裹在arguments.callee和为什么是truefactorial = 120.一些帮助将非常感激
function factorial(num){
if (num <= 1) {
return 1;
} else {
return num * arguments.callee(num-1)
}
}
var trueFactorial = factorial;
factorial = function(){
return 0;
};
alert(trueFactorial(5)); //120
Run Code Online (Sandbox Code Playgroud)
在函数内部,arguments.callee指的是该函数.
所以factorial是递归的 - 它自称.无论你使用什么名字.
重新定义名称factorial以引用不同的函数对第一个定义没有影响,因为在第一个定义中没有任何地方使用该名称factorial.