-3
var fact = (function(){
var cache = {'0': 1};
var func = function(n){
var result = 0;
if(typeof(cache[n]) === 'number'){
result = cache[n];
}
else{
result = cache[n] = n * func(n-1);
}
return result;
}
return func;
})();
console.log(fact(5)); //120
代码是这样的。 我完全无法理解此代码。 它看起来像添加缓存,并添加缓存 但这是如何工作的? 我们不需要循环来添加缓存吗?JavaScript,阶乘,太难
也,return func; < - 这是什么? 请全部解释
我的机器工作得很好 – YankeeCki
事实是一个返回'func'的iife(立即调用的函数表达式)。由于JavaScript支持头等功能,这是可能的。 – ZachPerkitny