什么是函数柯里化
柯里化通常也称部分求值,其含义是给函数分步传递参数,每次传递参数后部分应用参数,并返回一个更具体的函数接受剩下的参数,这中间可嵌套多层这样的接受部分参数函数,直至返回最后结果。
因此柯里化的过程是逐步传参,逐步缩小函数的适用范围,逐步求解的过程。
个人理解为在函数传执行时函数并不计算结果,而是返回一个新的函数,这个新的函数已经内置了之前的参数,在需要计算结果时再返回结果。
柯里化实现
通用的柯里化函数
var curry = function (fn) {
//利用闭包来保存参数
var _args = [];
return function () {
//如果参数为0返回计算结果
if (arguments.length === 0) {
return fn.apply(this, _args);
}
//否则将参数添加到_args中并返回当前函数
[].push.apply(_args, arguments);
return arguments.callee;
}
};
柯里化一个求和函数
var add = curry(function () {
return [].reduce.call(arguments, function (a, b) {
return a + b;
})
});
add(2, 4);
add(4);
add(2, 3, 45);
//此时函数并未执行加法运算,只是保存了添加的参数
add();
//这里执行了加法运算,返回计算结果60
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。