将多个参数传递给curried函数

时间:2015-05-16 21:45:20

标签: javascript function arguments closures currying

我正在阅读这本书 Effective Javascript ,并且已经达到了有关闭包的章节。有一个例子说明了如何传递嵌套函数的参数:

<div class="social-sidebar-buttons"   

但是如果我要传递两个参数(一个用于初始函数,第二个用于嵌套函数),我得到第二个参数的未定义:

function sandwichMaker(magicIngredient) {
  function make(filling) {
    return magicIngredient + " and " + filling;
  }

  return make;
}

var hamAnd = sandwichMaker("ham");

hamAnd("swiss"); // ham and swiss

我是否总是需要首先声明一个变量,然后在我想调用它时提供第二个参数?

2 个答案:

答案 0 :(得分:1)

由于sandwichMaker会返回一个功能,您正在寻找的实际通话为sandwichMaker("ham")("swiss");

请记住,如果名称后面没有括号,函数的行为就像任何其他变量一样,你可以传递它而不实际评估或运行&#34;它。

因此,return make;为您提供了一个可以在以后评估的功能,而return make(...);则为您提供了评估make的价值。

答案 1 :(得分:0)

如果要将参数传递给第二个函数而不将其存储在变量中,可以像这样执行

PFQuery *query;
if(_pClass != nil){
    query = [PFQuery queryWithClassName:_pClass];
} 

[query orderByDescending:@"createdAt"];

return query;