源码
function memo(func){
var cache = {};
return function(){
var key = JSON.stringify(arguments);
if (cache[key]){
console.log(cache)
return cache[key];
}
else{
val = func.apply(null, arguments);
cache[key] = val;
return val;
}
}
}
利用 闭包 的原理,维护一个 cache 的闭包变量,缓存函数的计算结果,使得函数执行更快。
应用
//斐波那契数列
var fib = memo(function(n) {
if (n < 2){
return 1;
}else{
return fib(n-2) + fib(n-1);
}
});