函式式程式設計,顧名思義,是使用函式的形式來程式設計,隨著react居高不下的人氣,函式式程式設計逐漸流行了起來。為什麼要使用函式式程式設計,能給我們帶來哪些好處呢?下面將一一介紹:
對於相同的輸入,永遠會得到相同的輸出,而且沒有任何可觀察的***,也不依賴外部環境的狀態。
舉個不是純函式例子:
var min = 18;
var checkage = age => age > min;
在不純的函式中,checkage 這個函式的行為不僅取決於輸入的引數 age,還取決於乙個外部的變數 min,換句話說,這個函式的行為需要由外部的環境決定。對於大型專案來說,這種高度依賴外部狀態是造成系統複雜性主要原因。
接下來看看純函式:
var checkage = age => age > 18;
可以注意到,純的 checkage 函式把關鍵數字 18 硬編碼在函式內部,擴充套件性比較差。這肯定是我們不希望看到的?怎麼去解決這個問題呢?我們可以使用函式柯里化優雅的解決這個問題。
函式柯里化的定義很簡單:傳遞給函式一部分引數來呼叫它,讓它返回乙個函式去處理剩下的引數。
看個例子:
我們可以對上面的函式進行柯里化
var checkage = min => (age => age > min);
var checkage18 = checkage(18);
checkage18(20);
// =>true
當然這種寫法很難接受,而且用這種寫法我們很容易寫出"包菜式"的**,比如」
h(g(f(x)));
為了解決這種巢狀式的**,我們需要用到函式組合
//兩個函式的組合
var compose = function(f, g) ;
};//或者
var compose = (f, g) => (x => f(g(x)));
var add1 = x => x + 1;
var mul5 = x => x * 5;
compose(mul5, add1)(2);
// =>15
我們定義的compose可以把任何兩個純函式結合到一起。當然你也可以擴充套件出組合三個函式,甚至多個函式的組合。。。
至此,我們可以使用函式式來編寫很多的應用場景。。
js函式式程式設計
1,函式式程式設計 2,物件導向程式設計 工廠,單例,觀察者,發布訂閱者等23中設計模式 3,過程式程式設計 強調將計算過程分解成可復用的函式 只有純的 沒有 的函式,才是合格的函式 函式式程式設計只是範疇論的運算方法,跟數理邏輯 微積分 行列式是同一類東西,都是數學方法,只是碰巧它能用來寫程式。在...
js 函式式程式設計
這兩天看書看到了函式式程式設計那節,感覺學到了挺多東西,之前看別人 都寫的挺漂亮,現在我寫的 是有點亂,所以還是要學習下別人的程式設計模式.1 平常寫的函式大多是接受值,合併值,返回值,比如經常寫的for迴圈 function printarray array 但是如果我們想做print之外的事情呢...
JS 之 函式式程式設計
由若干個純函式 偏函式 柯里化函式組合成乙個新的函式,同時,形成資料傳遞。挑選了一系列所需要的函式,把他們組合在一起,可以實現公共合作的效果。示例 function combination x var arr combination add,spl,toupper 三個函式,三個函式的資料都是相關聯...