js 函式式程式設計

2021-09-10 16:26:28 字數 1218 閱讀 8832

函式式程式設計,顧名思義,是使用函式的形式來程式設計,隨著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 三個函式,三個函式的資料都是相關聯...