[英]Passing multiple arguments to curried functions
我目前正在閱讀《 有效的Javascript》這本書,並且已經到達了有關閉包的章節。 有一個示例說明了如何像這樣傳遞嵌套函數的參數:
function sandwichMaker(magicIngredient) {
function make(filling) {
return magicIngredient + " and " + filling;
}
return make;
}
var hamAnd = sandwichMaker("ham");
hamAnd("swiss"); // ham and swiss
但是,如果我要傳遞兩個參數(一個用於初始函數,第二個用於嵌套函數),則第二個參數將變得不確定:
sandwichMaker("ham", "swiss"); // ham and undefined
我是否總是需要先聲明一個變量,然后在想調用它時提供第二個參數?
由於sandwichMaker
返回了一個函數,因此您要查找的實際調用是sandwichMaker("ham")("swiss");
請記住,在名稱后沒有括號,函數將像其他變量一樣工作,因為您可以在不實際評估或“運行”它的情況下將其傳遞出去。
因此, return make;
給您一個函數,您可以在以后評估,同時return make(...);
給您評估make
的價值。
如果您想將參數傳遞給第二個函數而不將其存儲在變量中,則可以這樣做
sandwichMaker("ham")("swiss");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.