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 ...