javascript 高阶函数 currying & uncurrying
* currying
var currying = function(fn) {
var args = [];
return function() {
if (arguments.length === 0) {
return fn.apply(this, args);
} else {
[].push.apply(args, arguments);
return arguments.callee;
}
}
}
var cost = (function() {
var money = 0;
return function() {
for (var i = 0, len = arguments.length; i < len; i++) {
money += arguments[i];
}
return money;
}
}).call(this);
// 转化为currying函数
var cost = currying(cost);
// 未真正求值
cost(100);
cost(200);
cost(300);
// 求值并输出
console.log(cost());
output: 600
* uncurrying
浙公网安备 33010602011771号