js 函式柯里化

2021-09-08 20:19:18 字數 1022 閱讀 9799

函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的**來說明函式柯里化的原理:

//

circle函式,接受半徑r和π

function

circle(r,p)

/** 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積

* 不管怎麼樣,π是不會變的,因此我們將他寫死,不需要外部呼叫傳入 */

function

currycircle(r)

也許你會覺得這段**很二,但是這就是函式柯里化的真實面目。當然上面的**只是乙個非常小的例子,真實世界中的函式柯里化會比它兇惡一點,下面來討論乙個更通用的例子。假設π不是唯一的(比如我們有三種π),我們計算圓面積公式當中的π會根據場景不同而變化,這個時候我們就不能直接寫死,而需要根據不同環境來配置π:

//

circle函式,接受半徑r和π

function

circle(r,p)

//針對circle函式的柯里化函式

function

curry(fn,p)

return

finalmethod;}//

我們有3種不同的π

var currycircle1=curry(circle,1.14);

var currycircle2=curry(circle,2.14);

var currycircle3=curry(circle,3.14);

//輸出:4.56 8.56 12.56

console.log(currycircle1(2),currycircle2(2),currycircle3(2));

可以看到,curry方法通過封裝最基礎的circle方法,同時儲存設定好的p引數(π),並返回乙個finalmethod方法,這樣我們最終呼叫finalmethod時就只需要傳入引數r(半徑)就可以完成。借助函式柯里化,我們擁有了三個簡化的計算圓面積方法。

js函式柯里化

什麼是函式柯里化?在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。這個技術由 christopher strachey 以邏輯學家 haskell curry 命名的,儘管它是 mos...

js 函式柯里化

函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的 來說明函式柯里化的原理 circle函式,接受半徑r和 function circle r,p 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積 不管怎麼樣,是不會變的,因此我們將他寫...

js函式柯里化

題目描述 實現函式 functionfunction,呼叫之後滿足如下條件 1 返回值為乙個函式 f 2 呼叫返回的函式 f,返回值為按照呼叫順序的引數拼接,拼接字元為英文逗號加乙個空格,即 3 所有函式的引數數量為 1,且均為 string 型別 示例1輸入 functionfunction he...