JavaScript函數(shù)式編程(Functional Programming)聲明式與命令式實(shí)例分析
本文實(shí)例講述了JavaScript函數(shù)式編程(Functional Programming)聲明式與命令式。分享給大家供大家參考,具體如下:
函數(shù)式編程屬于聲明式編程(declarative programming)的范疇,經(jīng)常跟聲明式編程一塊兒討論的是命令式編程(imperative programming),因?yàn)樗鼈兪莾煞N不太一樣的風(fēng)格。
命令式編程一般就是說(shuō)清楚具體要怎么樣得到一個(gè)結(jié)果:先這樣做,再這樣做,然后再這樣,如果這樣,就這樣做 … 聲明式編程就是聲明(說(shuō)明)一下你想得到的結(jié)果是什么樣的:把這組電影里的平均分大于 9 分的電影過(guò)濾出來(lái)給我。
比如有一組電影,你想過(guò)濾出評(píng)分 9 分以上的電影。
let movies = [
{ title: 'The Shawshank Redemption', rating: 9.6 },
{ title: 'Forrest Gump', rating: 9.4 },
{ title: 'Roman Holiday', rating: 8.9 }
]
命令式:
const imperativeMovieFilter = (movies) => {
let result = []
for (let i = 0; i < movies.length; i++) {
if (movies[i].rating >= 9) {
result.push(movies[i])
}
}
return result
}
在函數(shù)里面,先來(lái)個(gè) result,讓它等于一個(gè)空白的數(shù)組。然后我們又 for 循環(huán),去處理 movies ,循環(huán)的時(shí)候判斷當(dāng)前項(xiàng)目里的評(píng)分(rating)是不是大于等于 9,如果是的話,就把這個(gè)項(xiàng)目放到 result 里面。循環(huán)完成以后,會(huì)返回處理之后的結(jié)果。命令式編程里,詳細(xì)的說(shuō)明了得到結(jié)果需要做的每個(gè)操作。
聲明式:
const declarativeMovieFilter = (movies) => {
return movies.filter((movie) => movie.rating >= 9)
}
在上面這個(gè)函數(shù)里,我們只是說(shuō)明了一下,自己想要的結(jié)果是什么樣的,就是評(píng)分在 9 分以上的電影。
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript函數(shù)式編程Thunk原理解析
- javascript函數(shù)式編程基礎(chǔ)
- JavaScript中的函數(shù)式編程詳解
- JavaScript函數(shù)式編程(Functional Programming)組合函數(shù)(Composition)用法分析
- JavaScript函數(shù)式編程(Functional Programming)箭頭函數(shù)(Arrow functions)用法分析
- JavaScript函數(shù)式編程(Functional Programming)高階函數(shù)(Higher order functions)用法分析
- JavaScript函數(shù)式編程(Functional Programming)純函數(shù)用法分析
- 詳解用函數(shù)式編程對(duì)JavaScript進(jìn)行斷舍離
- JavaScript函數(shù)式編程實(shí)現(xiàn)介紹
相關(guān)文章
完美解決手機(jī)瀏覽器頂部下拉出現(xiàn)網(wǎng)頁(yè)源或刷新的問(wèn)題
下面小編就為大家分享一篇完美解決手機(jī)瀏覽器頂部下拉出現(xiàn)網(wǎng)頁(yè)源或刷新的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
JavaScript操作 url 中 search 部分方法函數(shù)
這篇文章主要介紹了JavaScript操作 url 中 search 部分方法函數(shù)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06
javascript實(shí)現(xiàn)鎖定網(wǎng)頁(yè)、密碼解鎖效果(類似系統(tǒng)屏幕保護(hù)效果)
這篇文章主要介紹了javascript實(shí)現(xiàn)鎖定網(wǎng)頁(yè)、密碼解鎖效果,跟Windows系統(tǒng)的屏幕保護(hù)效果類似,需要的朋友可以參考下2014-08-08
TypeScript模塊與命名空間的關(guān)系和使用方法
在TypeScript中就像在EC5中一樣,任何包含頂級(jí)import或export的文件都被認(rèn)為是一個(gè)模塊,下面這篇文章主要給大家介紹了關(guān)于如何在TypeScript使用模塊與命名空間以及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下2023-03-03
一個(gè)用js實(shí)現(xiàn)控制臺(tái)控件的代碼
一個(gè)用js實(shí)現(xiàn)控制臺(tái)控件的代碼...2007-09-09
如何基于viewport vm適配移動(dòng)端頁(yè)面
這篇文章主要介紹了如何基于viewport vm適配移動(dòng)端頁(yè)面,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
微信小程序?qū)崿F(xiàn)頂部固定 底部分頁(yè)滾動(dòng)效果
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)頂部固定底部分頁(yè)滾動(dòng)效果,本文大概給大家分享三種解決方案,每種方案給大家詳細(xì)剖析通過(guò)代碼解析哪種方案更適合,感興趣的朋友跟隨小編一起看看吧2022-10-10
JavaScript對(duì)象屬性設(shè)置和屏蔽技巧
這篇文章主要為大家介紹了JavaScript對(duì)象屬性設(shè)置和屏蔽技巧,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

