函数柯里化指:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
例如:
const sum = (a, b, c) => a + b + cconst curried = curry(sum)console.log(curried(1)(2)(3)) // 6console.log(curried(1, 3)(5)) // 9console.log(curried(2)(4)(6)) // 12
实现流程图:
实现代码:
function curry(fn, ...args) {const argNum = fn.length // 函数参数的个数return fillArgs(fn, argNum, args || [])}// 获取参数function fillArgs(fn, argNum, currArgs) {if(argNum === currArgs.length) {return fn(...currArgs)}return (...args) => {return fillArgs(fn, argNum, [...currArgs, ...args])}}
