pcwu's TIL Notes


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!"

Reference