当进行多次重复比较耗时的操作的时候,我们需要使用函数缓存的技巧
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值可以自己通过一些规则定义,以保证唯一性,例如加上前缀。函数缓存特别适用于参数有可能出现相同值、耗时长的场景,例如递归对大量随机数进行统一转换
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。