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
代码是这样的。 我完全无法理解这段代码。 它看起来像添加缓存,并添加缓存 但这是如何工作的? 我们不需要循环来添加缓存吗?
另外,返回功能; < - 这是什么? 请完整解释
答案 0 :(得分:0)
代码比需要的更复杂。缓存阵列不用作缓存;它被用作硬编码0的阶乘为1的事实。递归循环不需要添加到缓存中,但如果添加了额外的行,那么数组实际上可以用作缓存,它可以在后续调用函数时提高性能。