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(…)