使用命名函数表达式编写递归函数 factorial

递归函数通常的形式是一个函数通过名称调用自己

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

如果把这个函数赋值给其他变量,就会出问题

let anotherFactorial = factorial; 
factorial = null; 
console.log(anotherFactorial(4)); // 报错

可以使用命名函数表达式(named function expression)达到目的

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

let anotherFactorial = factorial; 
factorial = null; 
console.log(anotherFactorial(4)); // 24
posted @ 2020-06-30 13:51  to人间值得  阅读(173)  评论(0)    收藏  举报