淺談javascript函數(shù)式編程
函數(shù)式編程,屬于編程范式的一種
1 函數(shù)是第一公民,可以返回值,也可以作為其他函數(shù)的參數(shù)
//console是一個(gè)函數(shù)
function con(v){
console.log(v)
}
// execute 也是一個(gè)函數(shù)
function execute(fn){
fn(1)
}
//將con函數(shù)作為參數(shù)傳進(jìn)execute函數(shù)
execute(con) // 1
2 接近自然語(yǔ)言的寫法
曉池吃完飯然后就去洗澡 可以表現(xiàn)為eat().bathe()
// 吃飯函數(shù)
function eat(eat){
this.e = eat;
return this;
}
// 洗澡函數(shù)
function bathe(bathe){
this.b = bathe;
return this;
}
var person = eat("曉池在吃飯").bathe("曉池去洗澡了");
console.log(person.e) // 曉池在吃飯
console.log(person.b) // 曉池去洗澡了
3 函數(shù)式編程的特性
匿名函數(shù),即沒有名字的函數(shù),在函數(shù)式編程中很常見,有時(shí)候我們需要通過它(不復(fù)用的函數(shù))來(lái)完成部分功能,下面我們通過定義一個(gè)each函數(shù)來(lái)了解一下:
// 自定義each函數(shù)
function each(arr,func){
var length = arr.length;
for(var i = 0 ;i <length; i++){
func(i,arr[i])
}
}
// 執(zhí)行each函數(shù),傳進(jìn)一個(gè)匿名函數(shù)作為該函數(shù)的參數(shù)
each([1,2,3],function(i,v){
console.log('key:' + i + ',value:' +v);
});
//輸出內(nèi)容
//key:0,value:1
//key:1,value:2
//key:2,value:3
柯里化:柯里化是把接受多個(gè)參數(shù)的函數(shù)變換成接受一個(gè)單一參數(shù)(最初函數(shù)的第一個(gè)參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)
//定義add函數(shù),并返回一個(gè)函數(shù)
function add(num){
return function(x){
return num + x;
}
}
add1 = add(1)
console.log(add1(3)) // 4
高階函數(shù):有函數(shù)作為參數(shù)或函數(shù)內(nèi)部返回一個(gè)函數(shù),都可稱該函數(shù)為高階函數(shù) ,以上的each函數(shù)即算是高階函數(shù)的一種。
結(jié)束語(yǔ)
實(shí)際的應(yīng)用中,不會(huì)囿于函數(shù)式或者面向?qū)ο?,通常是兩者混合使用,事?shí)上,很多主流的面向?qū)ο笳Z(yǔ)言都在不斷的完善自己,比如加入一些函數(shù)式編程語(yǔ)言的特征等,JavaScript 中,這兩者得到了良好的結(jié)合,代碼不但可以非常簡(jiǎn)單,優(yōu)美,而且更易于調(diào)試。
- Javascript中的高階函數(shù)介紹
- Javascript 高階函數(shù)使用介紹
- JS高階函數(shù)原理與用法實(shí)例分析
- JavaScript函數(shù)式編程(Functional Programming)純函數(shù)用法分析
- JavaScript函數(shù)式編程(Functional Programming)聲明式與命令式實(shí)例分析
- Javascript函數(shù)式編程簡(jiǎn)單介紹
- JavaScript 函數(shù)式編程實(shí)踐(來(lái)自IBM)
- javascript函數(shù)式編程實(shí)例分析
- 探究JavaScript函數(shù)式編程的樂趣
- 《JavaScript函數(shù)式編程》讀后感
- JavaScript的函數(shù)式編程基礎(chǔ)指南
- JavaScript函數(shù)式編程(Functional Programming)高階函數(shù)(Higher order functions)用法分析
相關(guān)文章
原生JS與CSS實(shí)現(xiàn)軟件卸載對(duì)話框功能
今天給大家分享一個(gè)特別有意思的軟件卸載對(duì)話框功能,本段代碼是基于js 與css實(shí)現(xiàn)的,感興趣的朋友跟隨小編一起看看吧2019-12-12
原生js實(shí)現(xiàn)簡(jiǎn)單貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
JavaScript運(yùn)動(dòng)原理基礎(chǔ)知識(shí)詳解
這篇文章主要介紹了JavaScript運(yùn)動(dòng)原理基礎(chǔ)知識(shí)詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Bootstrap標(biāo)簽頁(yè)(Tab)插件切換echarts不顯示問題的解決
這篇文章主要給大家介紹了關(guān)于Bootstrap標(biāo)簽頁(yè)(Tab)插件切換echarts不顯示問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07
小程序?qū)崿F(xiàn)計(jì)時(shí)器小功能
這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)計(jì)時(shí)器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09
js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法
這篇文章主要介紹了js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法,涉及javascript動(dòng)態(tài)操作頁(yè)面元素結(jié)點(diǎn)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-08-08

