前端工程研究:理解函式編程核心概念與如何進行 JavaScript 函式編程
函式編程 ( functional programming ) 在這幾年變得有點熱門,像是 React 這套 JavaScript 框架,如果想學好他,通常也都必須要先熟悉函式編程的開發方法才行。畢竟函式編程只是一種程式設計方法,只要程式語言本身可以符合函式編程的基本概念,就可以宣稱用 函式編程 來開發程式。今天這篇文章,就想以 JavaScript 程式語言為出發,帶大家理解 JavaScript 函式編程的魅力與重要的核心概念。 簡介函式編程 在電腦科學領域中, 函式編程 ( functional programming ) 是一種程式設計方法,有別於我們較為熟悉的 物件導向編程 ( object-oriented programming ),這兩種編程之間存在有相當不同的設計概念,解決問題的 思考方式 也相當不同,也因此很多人會卡在「 思考 」這一關,當你用物件導向的方式來思考函式編程,這肯定是行不通的,大腦必須做出一點改變才行。 函式 ( functional ) 這個字,來自於「數學領域」的「數學函式」,在數學上的「函數運算」,通常會意味著會「 避免改變狀態 」與「 避免可變的資料 」。同時,這個「函數運算」還包含一個重要的「 純函數 」( pure functions) 特性,那就是函數在執行的時候,完全相同的參數傳入 (Input),一定會得到完全相同的結果傳出 (Output),函數在執行的過程中,是「 沒有副作用 」的,且函數編程更加強調「執行的結果」而非「執行的過程」,倡導利用幾個簡單的函數來計算結果,利用 純函數 的 沒有副作用 的特性,將一個複雜的問題,不斷的透過純函式逐層推導出複雜的運算,而不是設計一個相對複雜的執行程序。這些特性算是在 函式編程 的世界裡最最最重要的核心精神,如果少了這些特性,就不能稱為 函式編程 ( functional programming )。 其實有許多程式語言都能夠用 函式編程 的方法來做開發,像是 Perl, C++, Java 8, C# 3.0 這些「非函式程式語言」,都一樣可以用函式編程的概念來開發。我以我最熟悉的 C# 來說,雖然 C# 是個物件導向的程式語言,但從 C# 3.0 開始增加了許多語言特性,可以用來支...