JavaScript函数表达式——递归

递归

递归函数是在一个函数通过名字调用自身的情况下构成的。

        function factorial(num) {
            if(num<=1){
                return 1;
            }else{
                return num*factorial(num-1);
            }
        }
        var anotherFactorial = factorial;
        factorial = null;
        alert(anotherFactorial(4));//error

使用arguments.callee是一个执行正在执行的函数的指针。

        function factorial(num) {
            if(num<=1){
                return 1;
            }else{
                return num*arguments.callee(num-1);
            }
        }

严格模式下,arguments.callee会发生错误,用命名函数表达式可达成相同结果。

        var factorial = (function f(num) {
            if (num<=1) {
                return 1;
            }else{
                return num*f(num-1)
            }
        });

你可能感兴趣的:(JavaScript函数表达式——递归)