什么是函數(shù)式編程
- 函數(shù)與其他數(shù)據(jù)類型一樣挤忙,處于平等地位逊桦,可以賦值給其他變量,也可以作為參數(shù)卜高,傳入另一個函數(shù)弥姻,或者作為別的函數(shù)的返回值。
- 每一步都是表達式,都應該有返回值,而且盡可能避免讀寫
- 目的僅僅是返回結(jié)果,并不會修改任何變量
- 提供同樣輸入的情況下,返回值亦相同,易于優(yōu)化
高階函數(shù)
函數(shù)可以作為參數(shù)傳遞的,甚至可以作為返回值,這便是高階函數(shù)
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 :)
柯里化
柯里化是一種使用匿名單參數(shù)函數(shù)來實現(xiàn)多參數(shù)函數(shù)的方法
pipeline(管道)處理數(shù)據(jù)流,也就是依次傳入?yún)?shù)并返回值
Currying 的重要意義在于可以把函數(shù)完全變成「接受一個參數(shù)掺涛;返回一個值」的固定形式庭敦,這樣對于討論和優(yōu)化會更加方便。
var curriedAdd = function(a) {
return function(b) {
return a + b;
};
};
var addTen = curriedAdd(10);
addTen(10); //20
未完待續(xù)