柯里化(Curing)

时间:2023-03-09 05:14:01
柯里化(Curing)

柯里化:把接受多个参数的函数变换成接受单个参数的函数,并且返回准备接受余下参数,还能返回结果的一种技术。

 function currying(fn){
var args = Array.prototype.slice.call(arguments, 1); return function(){
var innerArgs = Array.prototype.slice.call(arguments);
var finnalArgs = args.concat(innerArgs); return fn.apply(null, finnalArgs);
} } function add(num1, num2){
return num1 + num2;
} var curriedAdd = currying(add, 2);
console.log(curriedAdd(3)); //

使用柯里化,我们实现一个数字累加的例子:

 function currying(fn) {
var _store = []; return function () {
if (!arguments.length) {
return fn.apply(null, _store);
} else {
_store = _store.concat(Array.prototype.slice.call(arguments));
}
} } function sum() {
var total = 0;
for (var i = 0, len = arguments.length; i < len; i++) {
total += arguments[i];
}
return total;
} var addNum = currying(sum); addNum(1);
addNum(2);
addNum(3, 4); console.log(addNum()); //

在多参数的函数中,如果我们想固定其中的一些参数,我们就可以使用函数的柯里化特性。预先将函数的某些参数传入,得到一个简单的函数,预先传入的参数则被保存在闭包中。