Javascript中匿名函数的递归调用

Javascript中匿名函数的递归调用

不管是什么编程语言,相信稍微写过几行代码的同学,对递归都不会陌生。 以一个简单的阶乘计算为例:

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

我们可以看出,递归就是在函数内部调用对自身的调用。 那么问题来了,我们知道在Javascript中,有一类函数叫做匿名函数,没有名称,怎么调用呢?当然你可以说,可以把匿名函数赋值给一个常量:

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

这当然是可以的。但是对于一些像,函数编写时并不知道自己将要赋值给一个明确的变量的情况时,就会遇到麻烦了。如:

(function(f){    f(10);})(function(n){     if (n <= 1) {        return 1;    } else {        return n * factorial(n-1);//太依赖于上下文变量名    }})//Uncaught ReferenceError: factorial is not defined(…)