我不明白这个递归咖喱函数是否正确。
function curry(fn) {
return function curryInner(...args) {
if (args.length >= fn.length) return fn(...args);
return function (...next) {
return curryInner(...args, ...next);
};
};
}
const example = {
multiplier: 5,
calculate: function (a, b) {
return (a + b) * this.multiplier;
},
};
example.curriedVersion = curry(example.calculate);
console.log(example.calculate(1, 2));
console.log(example.curriedVersion(1)(2));
我有 curry 函数实现与绑定,但我不知道为什么它工作和递归没有。你能帮我理解一下吗,我认为我在这个函数中的上下文理解是不正确的
function curry(func) {
return function curried(...args) {
if (args.length >= func.length) {
return func.apply(this, args)
} else {
return curried.bind(this, ...args)
}
}
}