# 柯里化
只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
—— Mostly Adequate Guide
所谓『柯里化』,就是把一个多参数的函数,转化为单参数函数,用于将一个函数拆成多个函数。
# 举例
const add = x => y => x + y;
const increment = add(1);
const addTen = add(10);
increment(2); // 3
addTen(2); // 12
这里定义了一个add
函数,它接受一个参数并返回一个新的函数。调用add
之后,返回的函数通过闭包的方式记住了add
的第一个参数。
以上代码,表明柯里化提供了『预加载』的能力,通过传递一到两个参数调用函数,就能得到一个记住了这些参数的新函数。
注意
这里需要注意遵循一个重要的模式
即策略性地把要操作的数据放到最后一个参数
# 总结
因此函数柯里化
具有如下特点:
- 参数复用——复用闭包的参数【预加载】
- 提前返回——返回接受余下的参数且返回结果的新函数
- 延迟执行——返回函数,等待执行
函数式编程时,组合模式函数只接受一个参数,因此需要通过函数柯里化将多个参数函数转换为单参数函数。