我正在尝试将参数传递给函数中的函数;
function add() {
let x = arguments[0];
function s(num) {
return num + x;
}
}
add(2)(3) //second argument to be passed to 'function s'.
所以我想要回电5。
最好的方法是什么?提前谢谢。
答案 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");