什么是柯里化?
在计算机科学中,柯里化(Currying)是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数且返回结果的新函数的技术。
1 | function currying(fn) { |
注:柯里化主要是利用闭包,将单一参数封装起来。
1 | function square(i) { |
柯里化的用途
降低通用性,提高适用性
延迟执行
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17var add = function() {
var _this = this,
_args = arguments;
return function() {
if (!arguments.length) {
var sum = 0;
for (var i = 0, c; c = _args[i++];) {
sum += c;
}
return sum;
} else {
Array.prototype.push.apply(_args, arguments);
return arguments.callee;
}
}
}
add(1)(2)(3)(4)(); //10