实现功能:
第一次执行函数计算到的结果会被缓存,再次调用函数时,函数值直接存缓存结果中获取
function cached(func) {
// 缓存计算结果
const cache = Object.create(null)
// 返回一个缓存函数
return function (...args) {
let cache_key = JSON.stringify(args)
let result = null
if (cache_key in cache) {
result = cache[cache_key]
} else {
result = func.apply(this, args)
cache[cache_key] = result
}
return result
}
}
使用示例
function computed(a, b) {
console.log('computed')
return a + b
}
let cachedComputed = cached(computed)
console.log(cachedComputed(2, 3))
console.log(cachedComputed(2, 3))
// 只计算了一次
// computed
// 5
// 5