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

一、以函數(shù)式編程思想實現(xiàn)的庫lambda、underscore?

https://underscorejs.org/

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

函數(shù)式編程是一種編程范式。js 中使用的編程范式還有命令式、依賴原型鏈的面向對象的范式、以及元編程。

函數(shù)式編程:不直接操作變量,對一系列邏輯抽象成函數(shù),再對函數(shù)進行組合,完成系統(tǒng)開發(fā)。

三、函數(shù)式編程的特點?

函數(shù)是一等公民。指的是函數(shù)與其他數(shù)據(jù)類型一樣,處于平等地位,可以賦值給其他變量,也可以作為參數(shù),傳入另一個函數(shù),或者作為別的函數(shù)的返回值

只用"表達式",不用"語句"。"表達式"(expression)是一個單純的運算過程,總是有返回值;"語句"(statement)是執(zhí)行某種操作,沒有返回值

沒有"副作用"指的是函數(shù)內部與外部互動(最典型的情況,就是修改全局變量的值),產生運算以外的其他結果。函數(shù)式編程強調沒有"副作用",意味著函數(shù)要保持獨立,所有功能就是返回一個新的值,沒有其他行為,尤其是不得修改外部變量的值。

不修改狀態(tài)。

引用透明。引用透明(Referential transparency),指的是函數(shù)的運行不依賴于外部變量或"狀態(tài)",只依賴于輸入的參數(shù),任何時候只要參數(shù)相同,引用函數(shù)所得到的返回值總是相同的。

四、函數(shù)式編程的好處?

代碼簡潔,開發(fā)快速。通用性復用性更高,維護性更好,作用域局限,副作用少。

更方便的代碼管理。函數(shù)式編程不依賴、也不會改變外界的狀態(tài),只要給定輸入?yún)?shù),返回的結果必定相同。因此,每一個函數(shù)都可以被看做獨立單元,很有利于進行單元測試(unit testing)和除錯(debugging),以及模塊化組合。

接近自然語言,易于理解。

易于"并發(fā)編程"。

五、常見的函數(shù)式編程的場景

閉包、偏函數(shù)、柯里化、compose、鏈式調用、高階函數(shù)



六、參考

http://taobaofed.org/blog/2017/03/16/javascript-functional-programing/

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容