思路:
- 使用一个记忆函数包裹要执行的函数;
- 用一个对象以键值对的形式保存参数和值;
- 如果参数是曾经执行过的,就直接从cache中取值;
- 如果参数未执行过的,那就直接运行函数,并把值保存到cache中。
优化const memorize = (fn) => {const cache = {};const f = (n) => {if (n in cache) return cache[n];cache[n] = fn(n);return cache[n];};return f;}
const memorize2 = (fn) => {const cache = {};return (n) => {if (!(n in cache)) cache[n] = fn(n);return cache[n];};}
上面提供的方法主要是针对单参数的,如果是多参数可以将参数进行md5或者其他的处理来作为key保存。
如果你对此非常感兴趣还可以去了解loadsh的记忆函数是怎么实现的。
