实现原理是采用函数闭包,缓存了计算结果,并在稍后调用。
// memoize函数接受一个函数并返回一个记忆化的函数
const memoize = (fn) => {
let cache = {};
return (...args) => {
let n = args[0]; // 这里只取一个参数
if (n in cache) {
console.log('Fetching from cache');
return cache[n];
}
else {
console.log('Calculating result');
let result = fn(n);
cache[n] = result;
return result;
}
}
}
// 为'add'纯函数创建记忆化的函数
const memoizedAdd = memoize(add);
console.log(memoizedAdd(3)); // 计算
console.log(memoizedAdd(3)); // 缓存
console.log(memoizedAdd(4)); // 计算
console.log(memoizedAdd(4)); // 缓存