柯里化举例(将多参数转化为单参数)
function add(x) {
return function(y) {
return x + y;
};
}
const addFive = add(5);
console.log(addFive(3));
柯里化场景
function curryMultiply() {
console.log(arguments)
const args = Array.prototype.slice.call(arguments)
return function next(multiplier) {
if (multiplier === undefined) {
return args.reduce((acc, curr) => acc * curr, 1)
}
args.push(multiplier)
return next
}
}
const multiply = curryMultiply(2)(3)(4)
console.log(multiply())
function curryMultiply1(...args) {
const argsarray = args
return function next (mul) {
if(mul === undefined){
return argsarray.reduce((old,curr) => old * curr,1)
}
argsarray.push(mul)
return next
}
}
const multiply1 = curryMultiply1(2)(3)(4)
console.log(multiply1())