函數式編程中有一個componse方法,能將傳進去的參數(參數需要是函數)分別執行并將返回的值帶到下一個函數里面去,一些lodash等第三方庫已經實現這種方法,不過這里可以實現一個比較簡單的版本,實際上函數很簡單,一共10幾行代碼。
function componse(...funcs) {
if(funcs.length <= 0) {
return arg => arg;
}
if(funcs.length ===1) {
return func[0];
}
return funcs.reduce((a, b) => (...args) => a(b(...args)));
}
以上幾行代碼就實現了一個這樣的功能,使用方法如下:
function fun1(a) {
console.log(1);
return a + 1;
}
function fun2(b) {
console.log(2);
return b + 1;
}
var c = componse(fun1, fun2);
var d = c(1); // return 3;
這里比較關鍵的地方是reduce函數的用法,如果不太明白的同學可以自行百度。
還有一點就是 這里判斷了funcs.length ===1是后的判斷,這里不判斷也是可以的,但是為了節省一點性能吧
實現componse 方法
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...