跳到主要内容

中等_函数柯里化

问题

假定有一个功能函数如下

function doSomething(task1, task2, task3) {
task1()
task2()
task3()
}

Then we should implement a fn to make function Curry:

function curry() {
// 代码实现
}

const curried = curry(doSomething)

curried(task1, task2, task3)
curried(task1, task2)(task3)
curried(task1)(task2)(task3)

答案

function curry(fn) {
return function curried(...args) {
if ( args.length === fn.length) {
return fn.apply(null, args);
}
return (...moreArgs) => curried.apply(null, args.concat(moreArgs));
};
}