什么是函數式編程
- 函數與其他數據類型一樣,處于平等地位,可以賦值給其他變量,也可以作為參數,傳入另一個函數,或者作為別的函數的返回值。
- 每一步都是表達式,都應該有返回值,而且盡可能避免讀寫
- 目的僅僅是返回結果,并不會修改任何變量
- 提供同樣輸入的情況下,返回值亦相同,易于優化
高階函數
函數可以作為參數傳遞的,甚至可以作為返回值,這便是高階函數
var greet = function(x) { return `Hello, ${ x }` };
var emote = function(x) { return `${x} :)` };
var compose = function(f, g) {
return function(x) {
return f(g(x));
}
}
var happyGreeting = compose(greet, emote);
// happyGreeting(“Mark”) -> Hello, Mark :)
柯里化
柯里化是一種使用匿名單參數函數來實現多參數函數的方法
pipeline(管道)處理數據流,也就是依次傳入參數并返回值
Currying 的重要意義在于可以把函數完全變成「接受一個參數;返回一個值」的固定形式,這樣對于討論和優化會更加方便。
var curriedAdd = function(a) {
return function(b) {
return a + b;
};
};
var addTen = curriedAdd(10);
addTen(10); //20
未完待續