js 柯里化
function curry(func) { return function curried(...args) { const context = this; // 如果参数数量足够,直接执行原函数 if (args.length >= func.length) { return func.apply(context, args); } else { // 参数不足,返回新的函数继续收集参数 return function(...args2) { return curried.apply(context, args.concat(args2)); }; } }; }
function sum(a,b,c){ return a+b+c } const cur=curry(sum) console.log(cur(2,3,3)) console.log(cur(2,3)(4)) console.log(cur(2)(3)(5)) console.log(cur(2)(3,6))

浙公网安备 33010602011771号