// ES6版的柯里化函数
function curry(fn) {
const g = (...allArgs) => allArgs.length >= fn.length ?
fn(...allArgs) :
(...args) => g(...allArgs, ...args)
return g;
}
// ES5版的柯里化函数
function currying(fn) {
var len = fn.length;
return function c() {
var args=[...arguments]
if (args.length >= len) {
return fn.apply(null, args);
} else {
return function () {
var inargs=[...arguments]
return c.apply(null,args.concat(inargs))
}
}
}
}
// 测试用例
const foo = currying((a, b, c, d) => {
console.log(a, b, c, d);
});
foo(1)(2)(3)(4); // 1 2 3 4
function sum() {
var args=[...arguments]
return function () {
var inargs=[...arguments]
if( inargs.length == 0 ){
var me = 0 ;
for(var i in args){
me +=args[i];
}
return me ;
}
else {
return sum.apply(this, args.concat(inargs));
};
}
}
console.log(sum(1)(2,3)(5)());