新聞中心
本篇內(nèi)容介紹了“JS中學(xué)習(xí)函數(shù)式編程的五項支柱是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
利川網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。成都創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。
一、什么是函數(shù)式編程
從FP函數(shù)式編程的眼中看來,世界的萬事萬物就是處理數(shù)據(jù)流:
input --> process -- output
FP函數(shù)式編程是一種思維方式:
比如非函數(shù)式,會這樣寫程序:
> var name = "gaowei"; > var greeting = "Hello,I'm ";; > console.log(greeting + name) Hello,I'm gaowei
而函數(shù)范式編程則會這樣寫程序:
> function greet(name) { ... return "Hi, I'm " + name; ... } > greet("Gaowei"); "Hi, I'm Gaowei"
二、用純函數(shù) pure-function,避免 副作用 side-effects
舉例說明“非純函數(shù)”,
> let name = "Gaowei"; > function greet() { ... console.log("Hi, I'm " + name); ... } > greet() Hi, I'm gaowei
這就不是一個純函數(shù),因為沒有返回結(jié)果。
而純函數(shù)則是:
> function greet(name) { ... return "Hi, I'm " + name; ... }
三、使用高階函數(shù) higher-order-function,函數(shù)本身可作為輸入或者輸出
在高階函數(shù)中,函數(shù)本身又可作為輸入與輸出。
> function setAdjectifier(adjective) { ... return function(description) { ..... return adjective + " " + description; ..... } ... } > let greatifier = setAdjectifier("great"); > greatifier("meeting") 'great meeting'
四、不要迭代,用 map, reduce 和 filter
map與filter之間的關(guān)聯(lián)與區(qū)別,可以參見下面這張圖:
五、不要更改輸入數(shù)據(jù),用不可變更的數(shù)據(jù)結(jié)構(gòu)
舉例,我們慣常的做法常常為:
> let fruits = ['apple', 'banana', 'peach']; > fruits[2] = 'orange' 'orange' > fruits [ 'apple', 'banana', 'orange' ]
上面的mutation的處理方法,將會修改原始數(shù)據(jù)。
嘗試 functional-programming的方式為:
> newFruits = fruits.map( rm => rm == "orange" ? "peach" : rm) [ 'apple', 'banana', 'peach' ] > fruits [ 'apple', 'banana', 'orange' ]
而能夠高效處理 immutable 數(shù)據(jù)的常用庫為:Mori, immutable.js, Underscor, Lodash, Ramda 等。
“JS中學(xué)習(xí)函數(shù)式編程的五項支柱是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
新聞名稱:JS中學(xué)習(xí)函數(shù)式編程的五項支柱是什么
本文URL:http://www.dlmjj.cn/article/jhgdeh.html