function addCurry(x, y, z) {
return x + y + z;
}
const curry = (fn, ...args) => {
//fn就是addCurry,fn.length就是3对应x,y,z
//args.length就是add传入的参数长度,第一次是add(1),即1
// 1<3所以继续柯里化,传入(2,3)此时args为(1,2,3)直接执行fn,即(addCurry(1,2,3))
return args.length >= fn.length ?
fn(...args) :
(..._args) => curry(fn, ...args, ..._args);
}
const add = curry(addCurry);
console.log( add(1)(2, 3) ); //6