我在几年前的一篇文章中发现了这段代码,但作者没有解释它是如何工作的。我理解fn和args1变量的来源,但是我很难理解args2在整个过程中会包含什么,并且想知道是否有人可以提供见解?
function curry(fn, ...args1) {
return (...args2) => { fn(...args1, ...args2); }
}
答案 0 :(得分:0)
curry
返回一个函数。当调用返回的函数时,可以传递它自己的参数。这些由args2
引用。
function curry(fn, ...args1) {
console.log("args1 = ", ...args1);
return (...args2) => {
console.log("args2 = ", ...args2);
fn(...args1, ...args2);
}
}
function myFunc(...allArgs) {
console.log(...allArgs);
}
const curried = curry(myFunc, 1,2,3);
curried(4,5,6);
正如您所看到的,当fn
被调用(这是对myFunc
的引用)时,它会收到所有args1
和args2
,因此会显示1 2 3 4 5 6
。