我一直在学习柯里化函数,我理解了我阅读的基本示例,但是我真的很想理解这个给出了高级函数的示例,但我发现它很混乱,如果有人可以帮助打破它下来会很棒,我知道
curry
接受一个函数,然后这个函数的参数被收集到一个带有...args
的数组中,但我不确定之后的逻辑或它是如何工作的。
我还想知道
(...args)
的价值是多少,它来自哪里?以及函数再次绑定到 args 的行发生了什么。
const curry = (fn) => {
return curried = (...args) => {
if (fn.length !== args.length) {
return curried.bind(null, ...args)
}
return fn(...args);
};
}
const totalNum = (x, y, z) => {
return x + y + z
}
const curriedTotal = curry(totalNum);
console.log(curriedTotal(10)(20)(30));