cur and and rest and spread operator

时间:2017-11-20 18:50:29

标签: javascript currying

我在几年前的一篇文章中发现了这段代码,但作者没有解释它是如何工作的。我理解fn和args1变量的来源,但是我很难理解args2在整个过程中会包含什么,并且想知道是否有人可以提供见解?

function curry(fn, ...args1) { 
    return (...args2) => { fn(...args1, ...args2); } 
}

1 个答案:

答案 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的引用)时,它会收到所有args1args2,因此会显示1 2 3 4 5 6