memorize函数

memorize记忆函数,缓存函数结果值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
export const memoize=function(fn){
const cache={}
return function () {
const key=JSON.stringify(arguments)
var value=cache[key]
if (!value) {
console.log('新值,执行中...');
value=[fn.apply(this,arguments)]
cache[key]=value
}else{
console.log('来自缓存');
}
return value[0]
}
}

测试:

1
2
3
4
5
6
7
8
9
function getNum(n){
return n
}

const memoizeGet=memoize(getNum)

console.log(memoizeGet(1)) // 新值,执行中... 1
console.log(memoizeGet(1)) // 来自缓存 1
console.log(memoizeGet(1)) // 来自缓存 1