是一種程式設計方法,核心精神是利用純函數的沒有副作用的特性,不斷的透過純函式,逐層推導出複雜的運算來解決問題。
運算的過程中,改變系統狀態或是對外部世界進行交互。
console.log()
符合以下標準的我們稱之為 Pure funciton
Immutability
:不會改變輸入的初始值Referential Transparency
:從輸入可以預期輸出,相同輸入相同輸出意義是 Function
和其他資料性別有相同地位
Function
可以作為另一個 Function
的 argument
Function
可以 return
另一個 Function
使用 Function 作為參數或回傳值的 Function 我們稱為 Higher Order Function(HOC)
Array.prototype.map()
Array.prototype.filter()
Array.prototype.reduce()
Promise.prototype.then()
Promise.prototype.catch()
可讀
只需要理解 Function ,就可以透過一連串 Function 的組合來完成功能。
可測(易除錯)
Pure Function 讓我們可以預期程式的輸出和輸入,讓 Code 更容易被測試,進而精準定位問題。
可重用
每個 Function 都可以由更小的 Function 組合出來,進而減少程式碼的重複
Functional Programming buzzwords
Think In FP
JavaScript 中函式就是一種物件 ─ 談談 first class function(一等公民函式)