![153b4cb119f6e435062d2260bb6735e7.png](https://i-blog.csdnimg.cn/blog_migrate/cb2b44a2c5473102060ead4df331f753.jpeg)
前言
在计算机领域,记忆(memoization)是主要用于加速程序计算的一种优化技术,它使得函数避免重复演算之前已被处理过的输入,而返回已缓存的结果。 -- wikipedia
Memoization
的原理就是把函数的每次执行结果都放入一个对象中,在接下来的执行中,在对象中查找是否已经有相应执行过的值,如果有,直接返回该值,没有才真正执行函数体的求值部分。在对象里找值是要比执行函数的速度要快的。
另外,Memoization
只适用于确定性算法,对于相同的输入总是生成相同的输出,即纯函数。
一、简单实现
通过 Memoization 的定义和原理,我们就可以初步实现 Memoization 了。
let memoize = function(func) {
let cache = {};
return function(key) {
if (!cache[key])
cache[key] = func.apply(this, arguments);
return cache[key];
}
}
是不是很