# 函数柯里化(Currying)
Curring 又称部分求值。是指把接收多个参数的函数变换成接收一个单一参数的函数,并且返回接收下的参数并且返回结果的新函数的技术。 一个 Curring 的函数首先会接受一些参数,接受了这些参数之后,该函数并不会立即求值,而是继续返回另一个函数,刚才传入的参数在函数形成的闭包中被保存起来。 待到函数被真正需要求值的时候,之前传入的所有参数都会被一次性用于求值。
# 普通函数
var monthlyCost = 0;
var cost = function (money) {
monthlyCost += money;
};
cost(100);
cost(200);
cost(300);
alert(monthlyCost);
# 柯里化
// 自执行函数返回一个新的函数
var costK = (function () {
var args = [];
return function () {
if (arguments.length == 0) {
var money = 0;
for (var i = 0; i < args.length; i++) {
money += args[i];
}
return money;
} else {
[].push.apply(args, arguments);
}
}
})();
costK(100);
costK(200, 300);
costK(500);
// 当参数为空时才真正的进行求值计算
console.log(costK());