九、JavaScript专题之偏函数
什么是偏函数
偏函数(Partial application),wiki 上解释:
In computer science, partial application (or partial function application) refers to the process of fixing a number of arguments to a function, producing another function of smaller arity.
翻译成中文:
在计算机科学中,局部应用(或局部函数应用)指将多个参数固定到一个函数上,产生另一个具有较小元数的函数的过程。
什么是元?元是指函数参数的个数,比如一个带有两个参数的函数被称为二元函数。
举个例子:
1 | function add(a, b) { |
Partial Application(偏函数应用)很容易和函数柯里化混淆,所以两者到底是有什么区别呢?
柯里化是将一个多参数函数转换成多个单参数函数,也就是将一个 n 元函数转换成 n 个一元函数。
局部应用则是固定一个函数的一个或者多个参数,也就是将一个 n 元函数转换成一个 n - x 元函数。
如果说两者有什么关系的话,引用 functional-programming-jargon 中的描述就是:
Curried functions are automatically partially applied.
即柯里化过的函数会自动生成局部应用。
偏函数实现
实现过程跟柯里化有点相似:
1 | function partial(fn, ...args) { |