函數(shù)式編程思想

什么是函數(shù)式編程

  • 函數(shù)與其他數(shù)據(jù)類型一樣,處于平等地位,可以賦值給其他變量,也可以作為參數(shù),傳入另一個函數(shù),或者作為別的函數(shù)的返回值。
  • 每一步都是表達(dá)式,都應(yīng)該有返回值,而且盡可能避免讀寫
  • 目的僅僅是返回結(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ù)來實(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ù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容