当进行多次重复比较耗时的操作的时候,我们需要使用函数缓存的技巧

function getCache(key){
   //如果存在缓存,则从缓存中读取数据
  if(key in getCache){
    console.log('--------从缓存中读取数据')
     return getCache[key];
  }else{
    //不存在缓存,则计算后将结果缓存起来
    console.log('--------没有从缓存中读取数据')
    getCache[key] = 'key' + key
    return getCache[key]
  }
}
let arr = [1,2,3,4,5,6,7,8,9];
arr.map(item=>{
  getCache(item);//输出   ----------没有从缓存中读取数据
});

arr.map(item=>{
  getCache(item);//输出   ----------从缓存中读取数据
});

函数缓存的本质就是在本函数上挂一个数组或对象,将key-value键值对保存起来供下次使用。这个key值可以自己通过一些规则定义,以保证唯一性,例如加上前缀。函数缓存特别适用于参数有可能出现相同值、耗时长的场景,例如递归对大量随机数进行统一转换


波罗丁的菠萝
886 声望14 粉丝

深林人不知,明月来相照