在先前的章節中,我們認真地探討了有關 JavaScript 有關記憶體傳值、傳參考的核心概念,其會依據我們操作物件的手法不同,而導致資料會出現 Mutable 與 Immutable 的差異。
在 FP 的設計模式中,我們使用 Immutable Data 的原因有很多,例如:避免開發者可以直接針對物件的參考物件直接操作,而產生預期外的副作用(Side Effect)。
除了避免 JavaScript 傳參考的特性外,同時也是為了要加強撰寫 JavaScript 的嚴謹性,就如前面章節所提到,JavaScript 除了是一門高階語言,更是一個弱型別語言,可能會因為型別的問題,或是屬性不存在而導致報錯,進而導致中斷程式碼的執行而產生生錯誤。
使用 Immutable Data 作為參數帶入函式,或是針對 Immutable Data 進行操作,可以掌握資料間的狀態互相獨立,確保服務中的元件不會因此互相影響。
在此我們簡單複習一下在這幾個小節中所理解到的概念:
pop
、push
、slice
、shift
、unshift
、reverse
及 sort
等方法,都會直接對物件中的參考物件進行修改,屬於 Mutable 方法。map
及 filter
是很好的 Immutable 陣列方法,可以在不影響原陣列的狀況下,回傳一組新的陣列。map
及 filter
對陣列進行更新、修改及刪除的動作。到這個章節,JavaScript 核心及 Immutable Data 概念告一個段落,在下一個章節中我們要來聊聊什麼是純函式(Pure Function)!我們下個章節見啦。