记忆函数:前端开发中提高效率的神器!(一)

记忆函数适用于那些具有重复计算或计算成本较高的函数,通过缓存计算结果,可以大大减少计算时间,提升代码性能。它在前端开发中常用于处理递归函数、动态规划等场景,以优化算法的执行效率。

什么时记忆函数呢

记忆函数,也称为缓存函数或记忆化函数,是一种在计算机编程中常用的优化技术。它通过将函数的输入和对应的输出结果存储起来,以便在后续调用时直接返回已经计算过的结果,从而避免重复计算,提高程序的执行效率。

举个例子

css 复制代码
 function add(a,b){
 return  a+b
 }

这个简单的倆数相加的函数,那我们还要优化的空间嘛,当然有啊, 以必须传入俩个参数,还有必须是俩个整数,代码展示

javascript 复制代码
function add(a, b)
{ 
if (arguments.length != 2) 
{
throw new Error('必须传递两个参数') 
} if (typeof a !== 'number' || typeof b !== 'number') 
{ throw new Error('必须传递两个正树')
} 
return a + b; }

在这里我就要跟你们说一下arguments的用法啦

agruments的用法

伪数组 Arguments 是 JavaScript 中的一个对象,它类似于数组但并不是真正的数组。它包含一个 length 属性和一组数字索引的元素,但是没有数组对象所具有的方法(如 push、pop 等等)

Arguments 对象可以在函数内部使用,用于访问函数被调用时传递的参数。例如:

javascript 复制代码
function myFunction() {
  console.log(arguments.length); // 打印参数个数
  console.log(arguments[0]); // 打印第一个参数
  console.log(arguments.prototype.toString.call() ) //'[object xxx]'
}
myFunction("Hello", "World"); // 输出 2 和 "Hello"

需要注意的是,arguments 对象不是一个真正的数组,所以不能使用数组的方法直接对其进行操作。如果需要将其转换为真正的数组,可以使用 Array.from() 或者展开运算符(...)来实现,还有一个临时转变:

javascript 复制代码
function myFunction() {
  const argsArray = Array.from(arguments); 
  const argsArray = [...arguments];
  // 将 arguments 转换为数组
  const argsArray =  Array.prototype.join.call(arguments,'--')//临时转变,其他俩种方法是永久转变
  console.log(argsArray); // 打印转换后的数组
}
myFunction("Hello", "World"); // 输出 ["Hello", "World"]

来大招了记忆函数

javascript 复制代码
function add(a, b) {
    if (arguments.length != 2) {
        throw new Error('必须传递两个参数')
    }
    if (typeof a !== 'number' || typeof b !== 'number') {
        throw new Error('必须传递两个正树')
    }
    return a + b;


}
//记忆函数  百搭的
function memorize(f) {
    if (typeof f !== 'function') return
    var cache = {}
    return function () {
        var key = arguments.length +
            Array.prototype.join.call(arguments, ",")
        if (key in cache) {
            return cache[key]
        } else {
            var res = f.apply(this, arguments)
            cache[key] = res
            return res
        }
    }

}
const memorizdAdd = memorize(add)

在这里我们生一个记忆函数,主要是生产一个闭包函数让已经算过的数字存储起来,计算机下次算到这个数字直接用就行不要再次的计算,这样我们就费空间,节约时间,这个样在我们开发的时候,就是使性能提升。假如你对闭包不理解可以观看深入理解 JavaScript 中的调用栈、作用域链和闭包,这个也是我写的文章,希望能对你有帮助

下期我们来个实例斐波那契数列 来个记忆函数练习,喜欢的来个关注 点赞 这个也是以后写文章的动力所在 谢谢大家能观看我的文章 咱下期再见 拜拜

相关推荐
杨荧1 小时前
【开源免费】基于Vue和SpringBoot的贸易行业crm系统(附论文)
前端·javascript·jvm·vue.js·spring boot·spring cloud·开源
疯狂小料3 小时前
HTML5语义化编程
前端·html·html5
缘月叙文3 小时前
【vue3封装element-plus的反馈组件el-drawer、el-dialog】
javascript·vue.js·elementui
萌萌哒草头将军3 小时前
🚀🚀🚀快来靓仔,给你看个大宝贝,我不允许你还不知道这个提效工具
前端·vue.js·react.js
三次元1113 小时前
JS中函数基础知识之查漏补缺(写给小白的学习笔记)
开发语言·前端·javascript·笔记·ecmascript·原型模式
装不满的克莱因瓶3 小时前
【Redis经典面试题十】热key与大key的问题如何解决?
java·数据库·redis·缓存·面试·面试题·key
秋堂主3 小时前
2025第1周 | JavaScript中的正则表达式
开发语言·javascript·正则表达式
Pandaconda3 小时前
【Golang 面试题】每日 3 题(二十二)
开发语言·笔记·后端·面试·golang·go·channel
酒与花生米3 小时前
【Vue学习】Vue 组件实例的生命周期(四个阶段,八个钩子)
javascript·vue.js·学习
布兰妮甜3 小时前
Three.js 基础概念:构建3D世界的核心要素
javascript·3d·webgl·three.js