手写之memorize

82 阅读1分钟

工欲善其事,必先利其器

老话说“基础不牢地动山摇”,所以偿还技术债决定从基础知识开始

实现

    function memorize(fn){
        if(typeof fn !== 'function'){
        throw new Error('期望fn 是一个函数,否则我就报错啦')
        }
        const cache = {}
        return function (){
            const key  = arguments.length+Array.from(arguments).join(',');
            if(cache[key]){
            return cache[key];
            }
            return cache[key] = fn.apply(this,arguments);
        }
    }

思路:记忆函数我理解是空间换时间的一种方式,那首先要存储已经计算过的值,达到一个二次利用的效果。

随手一画

虽然不复杂,练习练习画图的能力

image.png