文章更新中...
函數(shù)式編程用簡短、緊湊的代碼完成工作,代碼風(fēng)格可讀性強冲杀,更突出所解決的問題。
命令式編程和聲明式編程
// 將數(shù)組所有項加1
var oriArr = [1, 20, 3, 4, 5]
var result
// 命令式風(fēng)格
function addOne(oriArr) {
var newArr = []
for (var i = 0; i < oriArr.length; i++) {
newArr.push(oriArr[i] + 1)
}
return newArr
}
result = addOne(oriArr)
console.log(result)
// 聲明式風(fēng)格
var result = oriArr.map((item, index) => { return item + 1 })
console.log(result)
從代碼中兩種風(fēng)格中可以看出睹酌,命令式關(guān)注怎么做权谁,函數(shù)體部分代碼會較多,一眼看去就是一個循環(huán)憋沿,函數(shù)想做什么不太突出旺芽。聲明式突出做什么,突出業(yè)務(wù)代碼辐啄,抽象實現(xiàn)過程采章。
函數(shù)式編程相關(guān)概念
First-class Function
百度百科:是指在程序設(shè)計語言中,函數(shù)被當(dāng)作頭等公民壶辜。這意味著悯舟,函數(shù)可以作為別的函數(shù)的參數(shù)、函數(shù)的返回值砸民,賦值給變量或存儲在數(shù)據(jù)結(jié)構(gòu)中抵怎。
Pure Function
1、冪等:輸入決定輸出
2岭参、模塊化
3反惕、方便測試
High Order Function
函數(shù)作為參數(shù)或者返回值
Currying
通過組合實現(xiàn)復(fù)雜功能,將復(fù)雜的邏輯切分成細(xì)節(jié)演侯,方便發(fā)現(xiàn)問題姿染,使得函數(shù)可以直接通過map進行調(diào)用