JS-柯里化函数

柯里化

什么是柯里化?

简单来说,就是把多参数传入的函数拆成单参数(或部分)函数,内部再返回调用下一个单参数(或部分)函数,依次处理剩余的参数
(实则就是利用了闭包的特性)

目的:缩小适用范围,创建一个针对性更强的函数

用途:简化代码结构,提高系统的可维护性,强制了功能的单一性,自然就做到功能内聚,降低耦合

特点:
1. 降低代码的重复,提高代码的适应性
2. 提高了代码的合理性,更重的它突出一种思想---降低适用范围,提高适用性。
3. 对于一个已有函数,对其约定好其中的某些参数输入,然后生成一个更有好的、更符合业务逻辑的函数。
4. 提高针对性
5. 延迟执行(只有在最后一次才执行)
6. 固定易变因素

应用:ajax场景(ajax('method')()())

在bind方法中也应用到了柯里化:

柯里化函数形式的实现

我觉得柯里化函数的类型也可以分为多种形式

1. 只执行一次(传入对应要执行的函数)

2. 根据要执行函数的形参个数判断执行的次数(执行次数小于等于执行函数的形参个数)

3. 实现无限执行的累加操作(利用reduce和隐式转换的特性)

反柯里化

与柯里化相反的是反柯里化,其目的是为了扩大适用范围,创建一个应用范围更广的函数。使本来只有特定对象才适用的方法,扩展到更多的对象
实现可以让一个对象去借用一个原本不属于他的方法

实现形式:

场景:
判断变量类型


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!