将参数传递给函数中的函数--javascript

时间:2017-08-09 01:21:24

标签: javascript

我正在尝试将参数传递给函数中的函数;

function add() {
  let x = arguments[0];

  function s(num) {
    return num + x;
  }
}

add(2)(3) //second argument to be passed to 'function s'.

所以我想要回电5。

最好的方法是什么?提前谢谢。

1 个答案:

答案 0 :(得分:2)

Currying 是允许您部分应用函数参数的构造名称。这意味着不是将多个参数传递给函数并期望得到最终结果,而是可以传递这个参数的子集并返回一个等待其余部分的函数。

正如@KevBot已经指出的那样,你的例子错过了第二个函数的返回,并且将是:

function add() {
  let x = arguments[0];

  return function s(num) {
    return num + x;
  }
}

add(2)(3);

ES6 Curryed Hello World:

curryedHelloWorld = (greeting) => (name) => `${greeting}, ${name}!`;
curryedHelloWorld("Hello")("Tygar");

您甚至可以解决curryedHelloWorld示例,使其成为相反的方式:

helloworld = (greeting, name) => curryedHelloWorld(greeting)(name);
helloworld("Hello", "Tygar");