🍁 一:缓存函数(Memoization)
-
Memoization 是一种将函数返回值缓存起来的方法,在 Lisp, Ruby, Perl, Python 等语言中使用非常广泛。
-
随着 Ajax 的兴起,客户端对服务器的请求越来越密集(经典如 autocomplete),
-
如果有一个良好的缓存机制,那么客户端 JavaScript 程序的效率的提升是显而易见的。
缓存函数是指将上次的计算结果缓存起来,当下次调用时,如果遇到相同的参数,就直接返回缓存中的数据,适用于需要大量的重复计算,或者大量计算依赖于之前的结果
- 缓存函数适用于计算量大的递归调用可以加快速度。
例子:
普通函数:调用了453次
缓存函数:调用了12次
🦅 二:柯里化函数(curry)
- 在数学和计算机科学中,柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术
例子:
- 普通函数:
柯里化函数:
- 需求:检测字符串中是否包含空格
柯里化思想:
- 需求:请获取数组对象的age属性的值
这个例子可以使用lodash工具库
🔧 三:Lodash
- Lodash是一个一致性、模块化、高性能的JavaScript实用工具库
- Lodash通过降低array、number、objects、string等等的使用难度从而让JavaScript变得更简单 使用 npm i lodash -S 进行安装
🪜 四:偏函数(使用bind,面试常问)
- 柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个n元函数转换成n个一元函数
- 偏函数则是固定一个函数的一个或者多个参数,也就是将一个n元函数转换成一个n-x元函数 柯里化:f(a,b,c) = f(a)(b)(c)
偏函数:f(a,b,c) = f(a,b)(c)