首頁 > web前端 > js教程 > 柯里化 JavaScript 函數如何增量求和?

柯里化 JavaScript 函數如何增量求和?

Susan Sarandon
發布: 2024-11-28 14:48:16
原創
376 人瀏覽過

How Can a Curried JavaScript Function Incrementally Sum Values?

使用可變參數柯里化函數對值進行增量求和

我們可以創建一個行為如下的JavaScript 函數sum 嗎?

sum(1)(2) = 3
sum(1)(2)(3) = 6
sum(1)(2)(3)(4) = 10
登入後複製

簡而言之,該函數應該允許我們透過重複傳入額外的值來累積總和

最初,我們被告知這樣的函數在JavaScript 中是不可能的。然而,出現了另一種方法:在 sum 函數前面加上一個符號。

+sum(1)(2)(3)(4)
登入後複製

該符號與函數結合使用時,會將函數的回傳值強制為數字。因此,在這種情況下,函數 sum 實際上會傳回數字,然後在每次後續呼叫時遞增。

為了實現所需的行為,我們可以在 sum 函數中採用柯里化技術。實作如下所示:

function sum(n) {
  var v = function(x) {
    return sum(n + x);
  };

  v.valueOf = v.toString = function() {
    return n;
  };

  return v;
}

console.log(+sum(1)(2)(3)(4)); // Output: 10
登入後複製

此實作將 sum 函數包裝在 v 變數中,然後傳回變數。 v 函數讓我們可以逐步為 n 變數新增值。透過使用運算子將 v 強制轉換為數字,我們可以獲得累加和。

在範例中,console.log 語句輸出 10,即 1、2、3、4 的和。

以上是柯里化 JavaScript 函數如何增量求和?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板