第一次認識這個詞,在我學習react-redux
的時候,碰到了middlewere
以及其函數const middlewere = store=>next=>action {...}
,剛開始我真的是一臉懵逼,這是個啥?
仔細一看才發現,這不是ES6的箭頭函數嘛,就是換了個衣服,我就不認識了,實在是慚愧
那么就先來給它穿衣服吧!
箭頭函數中如果只是返回一條語句的話我們可以將{}
和return
值省略,例如:
(a)=>{
return a;
}
///可以簡寫成
(a)=>a;
那么同理得出store=>next=>action {...}
函數為:
const middlewere = (store)=>{
return (next)=>{
return (action)=>{ ... }
}
}
這樣是不是就認識了呢?那么這和柯里化函數有什么關系呢?憋著急,慢慢往下看
柯里化函數
柯里化函數概念:只傳遞給函數一部分參數來調用它,讓它返回一個函數去處理剩下的參數。
什么意思呢,舉個栗子就知道了哇
const concat3Words = (a, b, c) => {
return a+b+c;
};
const concat3WordsCurrying = (a) => {
return (b) => {
return (c) => {
return a+b+c;
};
};
};
console.log(concat3Words("a","b","c")); //abc
console.log(concat3WordsCurrying("a")("b")("c")); //abc
concat3WordsCurrying
每次調用都返回一個新的函數,該函數接受另一個調用,然后又返回一個新的函數,直至最后返回結果,分布求解,層層遞進,這就是柯里化函數,是不是和上面的middlewere
有點像呢,對滴,middlewere
就是個柯里化函數
柯里化的基礎
- 函數可以作為參數傳遞
- 函數能夠作為函數的返回值
- 閉包
柯里化的作用
- 延遲執行:不斷的柯里化,累積傳入的參數,最后執行。
- 參數復用:當在多次調用同一個函數,并且傳遞的參數絕大多數是相同的,那么該函數就可以使用柯里化
歡迎指出問題和提出建議哦