前端函數式編程中的各種概念

  • 2019 年 10 月 10 日
  • 筆記

本文不涉及深層次的解析,僅作為知識點的查閱。因為概念介紹的比較簡單,所以只適合有一定基礎的人群閱讀。

1、什麼是函數式編程?

  利用函數把運算過程封裝起來,通過組合各種函數來計算結果。(將一套業務流程分割成多個功能,每個功能都用函數封裝起來,最後實現這個業務其實就是在調用這些功能函數,這就是函數式編程)

2、一些與函數式編程相關的概念

  • 純函數 – 指的是函數無副作用,相同的輸入(函數參數)有相同的輸出(函數返回)
  • 閉包 – 存在內、外兩層函數,內層函數對外層函數的局部變量進行來引用。(用途:定義一些作用域局限的持久化變量)
  • 遞歸 – 在函數內部調用函數自身。(非常消耗內存,易產生棧溢出錯誤,解決:嚴格模式下,採用尾調用;正常模式下,改為循環)
  • 尾調用 – 某個函數的最後一步是調用另一個函數,僅調用,不能有其他操作,但是參數可以
  • pointfree – 不使用要處理的值的形參,只合成運算過程,可以使代碼更加清晰(就是將一些通用的函數,組合出各種複雜運算,省略掉中間不必要的參數變量)
  • 柯里化 – 把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,並且返回接受餘下的參數而且返回結果的新函數的技術(官文翻譯有點抽象,就是說把有多個參數的函數變成只有一個參數的函數,這個函數返回一個新函數,這個新函數接受剩餘的參數並且返回最後的結果,這個過程就叫做柯里化)
    // 普通的add函數  function add(x, y) {      return x + y  }    // 柯里化後  function curryingAdd(x) {      return function (y) {          return x + y      }  }    add(1, 2)           // 3  curryingAdd(1)(2)   // 3

  • 高階函數 – 一個函數以函數為參數,或以函數為返回值,或這兩種行為都有。