day01_柯里化、手写Lodash中的curry函数

柯里化

  • 当一个函数有多个参数的时候先传递一部分参数调用它(这部分参数以后永远不变)

  • 然后返回一个新的函数接收剩余的参数,返回结果

手写Lodash中的curry函数

function curry(fn) {
    return function curriedFn(...args) {
        if (args.length < fn.length) {
            return function () {
                return curriedFn(...args.concat(Array.from(arguments)))
            }
        } else {
            return fn(...args)
        }
    }
}
function getSum(a, b, c) {
    return a + b + c
}
const getSumCurry = curry(getSum)

console.log(getSumCurry(1, 3)(2));
console.log(getSumCurry(1)(2, 3));
console.log(getSumCurry(1, 3)(2));

 

 



posted @ 2022-04-10 23:39  coffeemil  阅读(43)  评论(0编辑  收藏  举报