我正在阅读这本书 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
我是否总是需要首先声明一个变量,然后在我想调用它时提供第二个参数?
答案 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;