簡體   English   中英

將多個參數傳遞給咖喱函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM