缓存函数

缓存函数是将函数的计算结果缓存起来,当下次以同样的参数调用该函数时,直接返回已缓存的结果,无需再次执行函数。这是一种常见的以空间换时间的性能优化手段。

要实现缓存函数的功能,我们可以把经过序列化的参数作为key,再把第一次调用后的结果作为value存储到对象中。在每次执行函数调用前,都需要判断缓存中是否含有对应的key,如果有的话,直接返回该key对应的值。

实现方式

function memorize(fn){
    const cache = Object.create(null)
    return function(...rest){
        const args = JSON.stringify(rest)
        return cache[args] || (cache[args] = fn.apply(fn,args))
    }
}

let complexCalc = (a, b) => {
    // 执行复杂的计算
};

let memoCalc = memorize(complexCalc);
memoCalc(666, 888);
memoCalc(666, 888); // 从缓存中获取

用什么数据结构存储并不重要,数组、对象、map、weakMap。

原文地址:https://www.cnblogs.com/zhenjianyu/p/13947840.html