JavaScript阶乘

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)

Mar*_*eed 6

在函数内部,arguments.callee指的是该函数.

所以factorial是递归的 - 它自称.无论你使用什么名字.

重新定义名称factorial以引用不同的函数对第一个定义没有影响,因为在第一个定义中没有任何地方使用该名称factorial.