如何在 JavaScript 中呼叫返回另一個函式的函式?


我們將透過引用函式名稱並在其後新增括號來呼叫函式。如果我們呼叫的函式返回另一個函式(在本例中確實如此),我們需要將其賦值給一個變數或立即呼叫它。將來,我們需要確保我們理解返回函式的行為以及如何在程式碼中使用它。這稱為函式柯里化。

函式柯里化

  • 函式柯里化函數語言程式設計中的一種技術,它將函式轉換為一系列函式,每個函式只接受一個引數。

  • 這允許對函式的引數進行部分應用,並且可以簡化函式組合。

  • 它以邏輯學家 Haskell Curry 的名字命名。

  • 在 JavaScript 中,可以使用 `curry` 函式對給定函式進行柯里化。

方法

在 JavaScript 中,您可以透過首先將返回的函式賦值給一個變數,然後使用變數名加括號來呼叫返回另一個函式的函式。

示例

let outerFunction = function() {
   return function() {
      console.log("Inner function");
   }
}
let innerFunction = outerFunction();
innerFunction(); // "Inner function"

輸出

Inner function

您也可以在呼叫外部函式後立即呼叫內部函式,方法是在外部函式呼叫中新增括號,如下所示:

outerFunction()(); // "Inner function"

也可以使用箭頭函式代替普通函式:

let outerFunction = () => () => console.log("Inner function");
let innerFunction = outerFunction();
innerFunction(); // "Inner function"

輸出

Inner function

或者

outerFunction()(); // "Inner function"

兩者都會產生相同的結果

最終程式碼

以下是在 JavaScript 中呼叫返回另一個函式的函式的示例:

// A function that returns another function
function createMultiplier(x) {
   return function(y) {
      return x * y;
   };
}

// Call the createMultiplier function and assign the returned function to a variable
let double = createMultiplier(2);

// Use the returned function to perform a calculation
console.log(double(5)); // Output: 10

解釋

  • createMultiplier 函式接受單個引數 x,並返回一個新函式。此返回函式接受單個引數 y,並返回 x 和 y 的乘積。

  • 我們呼叫 createMultiplier 函式並將值 2 作為引數傳遞,這會將返回的函式賦值給變數 double。

  • 現在 double 變數是一個函式,它接受一個引數 y 並返回 x*y,其中 x 為 2。

  • 我們呼叫 double(5),它將返回 2*5 = 10。

在此示例中,createMultiplier 是一個高階函式,因為它返回一個函式。返回的函式稱為閉包,因為它記住來自外部函式作用域的 x 值。

輸出

10

更新於:2023年9月10日

37K+ 次瀏覽

啟動您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.