柯里化就是把接受「多个参数」的函数变换成接受一个「单一参数」的函数,并且返回接受「余下参数」返回结果的一种应用。
思路
- 判断传递的参数是否达到执行函数的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