Skip to content

Latest commit

 

History

History
34 lines (26 loc) · 1.58 KB

18.md

File metadata and controls

34 lines (26 loc) · 1.58 KB

Javascript Functional Programming

定義

  1. Function 必須作為一級公民。意即,Function 可以像一般變數一般被當作參數傳入、被當作結果輸出、被任意 assign 給其他變數、被任意進行運算。
  2. Function 中只能有 Expression 而非指令( instructions )。
  3. Function 必須是 「Pure」、沒有 Side Effect。
  4. Function 「不可改變 Input 的資料」、「不可 改變狀態」。
  5. Function 「可以任意『組合』得到新的 Function,且依然滿足以上這些守則」。

Function 為一級公民

  • Function 可以儲存在變數中
  • Function 可作為回傳結果

Function 中只能有 Expression 而非指令( instructions )。

  • Instructions 就是跟程式說你該怎麼做,例如 for
  • Expression 就是跟程式說我想要得到什麼,例如 map, reduce

Function 必須是 Pure Function、沒有 Side Effect

  • Function 的輸入是什麼輸出就是什麼,不會因為外部狀態或者是時間而改變輸出。

Function 「不可改變 Input 的資料」、「不可 改變狀態」

  • Function 不應該修改 input 的資料。

Function 可以任意組合得到新的 Function,且依然滿足以上這些守則

  • 隨意將兩個 function 組合起來也必須符合上述條件

Reference

  1. https://medium.com/%E4%B8%80%E5%80%8B%E5%B0%8F%E5%B0%8F%E5%B7%A5%E7%A8%8B%E5%B8%AB%E7%9A%84%E9%9A%A8%E6%89%8B%E7%AD%86%E8%A8%98/javascript-functional-programming-%E4%B8%80%E6%96%87%E5%88%B0%E5%BA%95%E5%85%A8%E7%B4%80%E9%8C%84-95ff19d9892
tags: Javascript functional FP