定义
计算机科学中,局部应用是指固定一个函数的一些参数,然后产生另一个更小元的函数,什么是元?元是指函数参数的个数,比如一个带有两个参数的函数被称为二元函数
下面是个简单的例子
1 | function add(a, b) { |
柯里化和局部应用(偏函数)
这个片函数和柯里化如此的相似,两者之间的区别在哪呢?
柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个n元函数转换成n个一元函数。
偏函数则是固定一个函数的一个或者多个参数,也就是将一个n元函数转换成一个 n - x 元函数。
两者之间的的关系:柯里化是自动的偏函数的应用
partial
今天的目的就是模仿underscore写一个partial函数,比起curry函数,这个会显得简单些
1 | function add(a, b) { |
但是使用了bind之后,this的指向发生了改变,我们需要写一个不改变this指向的方法
第一版
1 | function partial(fn) { |
第二版
像curry函数可以使用占位符一样,我们希望partial函数也可以实现这个功能
1 | var _ = {}; |
underscore 和 lodash 都提供了 partial函数, 但是只有lodash提供了curry函数。