Compose Function 筆記
compose 的概念,就是把要層層堆疊套在一起的 function 組合起來:
// ES5
var compose = function(f, g) {
return function(x) {
return f(g(x));
};
};
// ES6
const compose = (f, g) => (x) => f(g(x));
在 composer 的定義中,g 會在 f 之前執行,而建立一個由右至左的資料流。這麼做的可讀性遠高於巢狀的 function 呼叫。
另一個例子,當我們要把某段文字又變大寫,後面又加驚嘆號時:
const toUpperCase = x => x.toUpperCase();
const exclaim = x => x + '!';
const shout = compose(exclaim, toUpperCase);
shout("send in the clowns");
//=> "SEND IN THE CLOWNS!"