当前位置: 首页 > news >正文

JavaScript中如何实现函数缓存,函数缓存有哪些应用场景

函数缓存就是将函数运算的结果进行缓存。

本质上是利用空间换时间。

常用于缓存数据计算结果和缓存对象。缓存只是一个临时的数据存储,它保存数据,为了方便将来对该数据的请求时,可以更快的得到处理。

缓存函数

实现一个缓存函数,主要依靠闭包、柯里化和高阶函数。

闭包:

(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]}
}
  1. 在当前函数作用域内定义一个空对象,用来缓存运行的结果
  2. 使用柯里化返回一个函数,返回的函数由于闭包的特性,可以访问缓存
  3. 然后判断输入参数是不是存在缓存中,如果存在,就直接返回缓存中的数据,如果缓存中不存在,使用函数对输入输入的参数进行运算,然后把结果存储到缓存中。

应用场景

使用缓存的效率是非常高的,但并不是所有的场景中都适用,在这几个场景中,适合使用缓存:

  • 对于昂贵的函数调用,执行复杂计算的函数
  • 对于具有有限并且高度重复输入范围的函数
  • 对于具有重复输入值的递归函数‘
  • 对于纯函数,也就是传入任何参数,都返回相同的结果,这时候就适用缓存。
http://www.lryc.cn/news/342906.html

相关文章:

  • 以中国为目标的DinodasRAT Linux后门攻击场景复现
  • Day 24 数据库管理及数据类型
  • MAC 本地搭建Dify环境
  • vue3使用tsx/jsx时报错:JSX 元素隐式具有类型 “any“,因为不存在接口 “JSX.IntrinsicElements“。
  • 卷价格不如卷工艺降本增效狠抓模块规范化设计
  • [报错解决]Failed to load driver class oracle.jdbc.OracleDriver
  • 前端科举八股文-CSS篇
  • tracert命令
  • goget配置多个golang 运行环境
  • 小程序预览或上传代码时,遇到app.json未找到某个wxml文件的解决方法
  • VUE v-for 数据引用
  • 嵌入式linux学习第一天
  • 基于Springboot的教学辅助系统(有报告)。Javaee项目,springboot项目。
  • CentOS7编译安装freeswitch1.10.11
  • 网络知识点之—QoS
  • LeetCode 每日一题 ---- 【741.摘樱桃】
  • 新火种AI|挑战谷歌,OpenAI要推出搜索引擎?
  • 选择适用的无尘棉签:保障洁净生产环境下的高效擦拭
  • 通信录的动态版本
  • FineReport高频面试题及参考答案
  • git merge 命令合并指定分支到当前分支
  • 【在线OJ】Vue创建OJ管理系统
  • 常用算法汇总
  • W801学习笔记二十二:英语背单词学习应用——下
  • Vue路由的模式和原理
  • 在K8S中,静态、动态、自主式Pod有何区别
  • 【Three.js基础学习】15.scroll-based-animation
  • ubantu安装mysql
  • 注意!华为HCIP-Datacom认证考试题有变化!
  • 你是我的荣耀 | 林先生:从酷爱数学到毕业走向数据分析岗位