函数柯里化指:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。

    例如:

    1. const sum = (a, b, c) => a + b + c
    2. const curried = curry(sum)
    3. console.log(curried(1)(2)(3)) // 6
    4. console.log(curried(1, 3)(5)) // 9
    5. console.log(curried(2)(4)(6)) // 12

    实现流程图:
    实现代码:

    1. function curry(fn, ...args) {
    2. const argNum = fn.length // 函数参数的个数
    3. return fillArgs(fn, argNum, args || [])
    4. }
    5. // 获取参数
    6. function fillArgs(fn, argNum, currArgs) {
    7. if(argNum === currArgs.length) {
    8. return fn(...currArgs)
    9. }
    10. return (...args) => {
    11. return fillArgs(fn, argNum, [...currArgs, ...args])
    12. }
    13. }