织梦网站怎样做安全防护,北京网站开发需要多少钱,直播开放平台抖音,成都必去的地方排行函数缓存就是将函数运算的结果进行缓存。
本质上是利用空间换时间。
常用于缓存数据计算结果和缓存对象。缓存只是一个临时的数据存储#xff0c;它保存数据#xff0c;为了方便将来对该数据的请求时#xff0c;可以更快的得到处理。
缓存函数
实现一个缓存函数#xf…函数缓存就是将函数运算的结果进行缓存。
本质上是利用空间换时间。
常用于缓存数据计算结果和缓存对象。缓存只是一个临时的数据存储它保存数据为了方便将来对该数据的请求时可以更快的得到处理。
缓存函数
实现一个缓存函数主要依靠闭包、柯里化和高阶函数。
闭包
(function () {var a 1;function add() {const b 2let sum b aconsole.log(sum); // 3}add()
})()柯里化
把接受多个参数的函数转化为接受一个参数的函数。
// 非柯里化函数
var add function (x, y) {return x y;
}
add(3, 4) //7
// 柯里化函数
var add2 function (x) {//** 返回函数 **return function (y) {return x y;}
}
add2(3)(4) //7也就是把一个二元函数拆分为两个一元函数
高阶函数通过接收其他函数作为参数或者返回其他函数的函数。
缓存函数代码
const memoize function (func, content) {let cache Object.create(null)content content || thisreturn (...key) {if (!cache[key]) {cache[key] func.apply(content, key)}return cache[key]}
}在当前函数作用域内定义一个空对象用来缓存运行的结果使用柯里化返回一个函数返回的函数由于闭包的特性可以访问缓存然后判断输入参数是不是存在缓存中如果存在就直接返回缓存中的数据如果缓存中不存在使用函数对输入输入的参数进行运算然后把结果存储到缓存中。
应用场景
使用缓存的效率是非常高的但并不是所有的场景中都适用在这几个场景中适合使用缓存
对于昂贵的函数调用执行复杂计算的函数对于具有有限并且高度重复输入范围的函数对于具有重复输入值的递归函数‘对于纯函数也就是传入任何参数都返回相同的结果这时候就适用缓存。