【前端手撕】函数柯里化curry
柯里化是把一个接受多个参数的函数转换成接受单一参数或部分参数并返回一个新函数直到收到全部所需参数后才执行原函数的过程。例如function add(a, b, c) { return a b c } const curriedAdd curry(add); curriedAdd(1)(2)(3) // 6 curriedAdd(1, 2)(3) // 6 curriedAdd(1)(2, 3) // 6本质是参数收集当收集到的参数个数达到原函数定义的形参个数fn.length时就调用原函数。代码const curry (fn, ...args) { if (args.length fn.length) { return fn(...args) } else { return (...rest) { return curry(fn, ...args, ...rest) } } }注意这里的fn.length是函数定义时声明的形参个数不包括剩余参数。一般这个实现是针对常规固定参数函数的。

相关新闻