实现柯里化函数

柯里化就是把接受「多个参数」的函数变换成接受一个「单一参数」的函数,并且返回接受「余下参数」返回结果的一种应用。

思路

  • 判断传递的参数是否达到执行函数的fn个数
  • 没有达到的话,继续返回新的函数,并且返回curry函数传递剩余参数

实现代码:

// args:用于记录已有参数
let curry = (fn, ...args) =>
            fn.length > args.length ?
            (...arguments) => curry(fn, ...args, ...arguments) :
            fn(...args)
// 在给到足够的参数时,执行函数。不够参数的时候则返回一个新的curry函数

测试用例:

let addSum = (a, b, c) => a+b+c
let add = curry(addSum)
console.log(add(1)(2)(3))  //6
console.log(add(1, 2)(3))  //6
console.log(add(1,2,3))    //6
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务