一.概念
函數組合顧名思義就是將兩個或兩個以上函數組合成一個新函數例如:
const composeFunction=function(f1,f2){ return function(args){ return f1(f2(args)) } }
//f1,f2是都是函數,args是組合后生成的新函數的參數
二.函數組合的作用
我們在實際開發項目的時候,通常都會將函數設計得盡量職責單一,比如有以下三個功能
比較單一得函數分別是lowerCase(變成小寫),upperCase(變成大寫),trim(去除空格),split(轉換成數組)
function lowerCase(input) {
return input && typeof input === "string" ? input.toLowerCase() : input;
}
function upperCase(input) {
return input && typeof input === "string" ? input.toUpperCase() : input;
}
function trim(input) {
return typeof input === "string" ? input.trim() : input;
}
function split(input, delimiter = ",") {
return typeof input === "string" ? input.split(delimiter) : input;
}
// compose函數的實現,請參考 “組合函數的實現” 部分。
const trimLowerCaseAndSplit = compose(trim, lowerCase, split);
trimLowerCaseAndSplit(" a,B,C "); // ["a", "b", "c"]
三.函數組合的實現
function compose(...funcs) { return function (x) { return funcs.reduce(function (arg, fn) { return fn(arg); }, x); }; }
浙公網安備 33010602011771號