- 今天看到一个递归函数写法, 用到命名函数表达式 。 然后网上查了下相关资料,贴出来分享一下。
var fs = (function test(num) {
if (num <= 1) {
return num;
} else {
return num * test(num - 1)
}
//下面这两行代码完全不会影响运行,可以试试
//var f = test;
// test = null;
});
var num = 7
console.log(num, "递归数字")
console.log(fs(num), "递归结果")
- 这样即使函数赋值给了另外一个变量,f()函数依然是有效的,所以递归调用能正常完成。而且这种方式在严格模式和非严格模式下都可以使用哦。
转自 Sunshine丶 https://www.cnblogs.com/sunshine-c/articles/5815895.html
转自 汤姆大叔 https://www.cnblogs.com/TomXu/archive/2011/12/29/2290308.html