利用闭包和arguments的原理实现:
如果连续调用某个函数
而这个函数的参数 在每次调用的时候都是一样的
就没有必要一遍一遍的计算
可以用之前的储存的计算结果进行返回
大致原理代码如下
function test1(fn){
var cache={}
return function(){
var str=JSON.stringify(arguments)
cache[str]=cache[str]?cache[str]+"(来自缓存)":fn.apply(fn,arguments)
return cache[str]
}
}
var add=test1(function(){
var arg=arguments.length
var res=0
for(var i=0;i<arg;i++){
res+=arguments[i]
}
return res
})
console.log(add(1,2))
console.log(add(1,2))
代码不多 但是一般都是这种原理