高階函式 高階元件以及柯里化的理解

2021-10-18 20:35:11 字數 1316 閱讀 3280

1. 高階函式

函式可以作為另乙個函式的引數或者返回值

最常用的高階函式想必是map和reduce 如下:

let arr=[1

,2,3

,4]let arrtemp= arr.

map(

(v)=>v+1)

let arrresult = arrtemp.

reduce

((sum,v)

=>

)console.

log(

"arrtemp"

,arrtemp,

"arrresult"

,arrresult)

//[2, 3, 4, 5], 14

map,reduce更多細節可以參考mdn

說到高階函式想到另外乙個經常會用到的知識點–柯里化

2. 柯里化

可以理解為函式分布傳遞引數,把接受多個引數的函式變換成接受乙個單一引數的函式,並且返回接受餘下的引數,也就是說逐步傳參,逐步縮小函式的適用範圍,逐步求解的過程。

function

add(a,b)

letadd

=function

(a)}

;add(1

,2)add(1

)(2)

柯里化三個特性

引數復用

提前返回

延遲計算/執行

高階函式裡面的柯里化

function

curry

(x)

_curry.

tostring

=function()

;return _curry;

}

3. 高階元件( higher order component 簡稱:hoc)

是接收乙個元件作為引數,並返回乙個新元件的函式,總的來說就是每個元件以及擴充套件元件的函式只關心自己的事情,被擴充套件的元件也不關心別人會怎麼擴充套件它

hoc既不會修改輸入的元件,也不會使用使用繼承性去拷貝輸入元件的行為,相反hoc通過包裹它在乙個容器元件來組合原始元件,hoc是乙個純函式沒有任何***。也就是說hoc可以往被擴充套件的元件注入自己的東西,但是不允許去改動被擴充套件元件原有的一切東西。

更多細節可以參考react官方文件

高階函式 函式柯里化與反柯里化

一 函式柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數而且返回結果的新函式的技術。例 記錄程式設計師乙個月的加班總時間,那麼好,我們首先要做的是記錄程式設計師每天加班的時間,然後把乙個月中每天的加班的時間相加,就得到了乙個...

js高階高階之函式柯里化

函式柯里化是所有程式語言推崇的函式優化方式,js的函式柯里化是你寫出優雅函式的基礎。例如最簡單的例子 求 15 3 4的值 let calcu a,b,c a b c function curry fn,args let add curry calcu console.log add 15 3 5 ...

Python高階1 高階函式 柯里化

高階函式 不相等自定義sort函式 內建函式 高階函式 sort函式 def sort2 lst,key none,reverse false res if key is none key lambda x,y x ifreverse key lambda x,y x y for x in lst ...