js 對柯里化函式簡單理解及應用場景

2021-10-10 11:01:51 字數 927 閱讀 2860

直奔主題

function

curryingadd

(x)}

curryingadd(1

)(2)

這是乙個實現加法的函式,按照普通函式的實現方法 curryingadd裡面直接return x+y 為什麼還要return乙個函式。按照我的理解,柯里化就是不是一次性把所有引數傳入,而是每呼叫一次return乙個函式 再次呼叫,最後乙個返回值就是所期望的值。

那為什麼普通函式能夠實現的還要這麼複雜呢,肯定也是有一定的應用場景,使用柯里化能夠減少一點**冗餘度。

使用場景一:減少重複傳遞不變的部分引數

下面舉乙個例子吧

我們檢測字串是否存在

普通寫法

let

gomatch

=function

(reg,str)

let result1 =

gomatch

(/\s+/g

,'i am hungry');

//true

let result2 =

gomatch

(/\s+/g

,'metoo!');

//false

柯里化寫法

function

curryingmatch

(reg)

}let result =

curryingmatch

(/\s+/g);

let ishas =

result

('my boo'

);

這樣我們就不用每次都傳正則匹配進去,而且想實現其他正則匹配判斷,也能很好的復用,減少**冗餘度。

待更新…

簡單理解函式柯里化

柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。通俗的說,柯里化其實就是將乙個多參的函式,轉換為單參的函式 通過add函式能夠比較直觀的理解函式柯里化 非柯里化 function add x,y a...

js函式柯里化的理解

函式柯里化理解示例 求和 let add function a,b,c else 引數解構版本 function curry fn,args let f1 add.bind console.log f1 2,3 5 但是簡單版bind實現不支援物件和其他引數同時傳入,如下 let f2 add.bi...

js函式柯里化

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