日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
JS中學(xué)習(xí)函數(shù)式編程的五項支柱是什么

本篇內(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ù)式編程是一種思維方式:

JS中學(xué)習(xí)函數(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ū)別,可以參見下面這張圖:

JS中學(xué)習(xí)函數(shù)式編程的五項支柱是什么

五、不要更改輸入數(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