淺談javascript函數(shù)式編程
函數(shù)式編程,屬于編程范式的一種
1 函數(shù)是第一公民,可以返回值,也可以作為其他函數(shù)的參數(shù)
//console是一個函數(shù)
function con(v){
console.log(v)
}
// execute 也是一個函數(shù)
function execute(fn){
fn(1)
}
//將con函數(shù)作為參數(shù)傳進execute函數(shù)
execute(con) // 1
2 接近自然語言的寫法
曉池吃完飯然后就去洗澡 可以表現(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ù)式編程中很常見,有時候我們需要通過它(不復(fù)用的函數(shù))來完成部分功能,下面我們通過定義一個each函數(shù)來了解一下:
// 自定義each函數(shù)
function each(arr,func){
var length = arr.length;
for(var i = 0 ;i <length; i++){
func(i,arr[i])
}
}
// 執(zhí)行each函數(shù),傳進一個匿名函數(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
柯里化:柯里化是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)
//定義add函數(shù),并返回一個函數(shù)
function add(num){
return function(x){
return num + x;
}
}
add1 = add(1)
console.log(add1(3)) // 4
高階函數(shù):有函數(shù)作為參數(shù)或函數(shù)內(nèi)部返回一個函數(shù),都可稱該函數(shù)為高階函數(shù) ,以上的each函數(shù)即算是高階函數(shù)的一種。
結(jié)束語
實際的應(yīng)用中,不會囿于函數(shù)式或者面向?qū)ο?,通常是兩者混合使用,事實上,很多主流的面向?qū)ο笳Z言都在不斷的完善自己,比如加入一些函數(shù)式編程語言的特征等,JavaScript 中,這兩者得到了良好的結(jié)合,代碼不但可以非常簡單,優(yōu)美,而且更易于調(diào)試。
- Javascript中的高階函數(shù)介紹
- Javascript 高階函數(shù)使用介紹
- JS高階函數(shù)原理與用法實例分析
- JavaScript函數(shù)式編程(Functional Programming)純函數(shù)用法分析
- JavaScript函數(shù)式編程(Functional Programming)聲明式與命令式實例分析
- Javascript函數(shù)式編程簡單介紹
- JavaScript 函數(shù)式編程實踐(來自IBM)
- javascript函數(shù)式編程實例分析
- 探究JavaScript函數(shù)式編程的樂趣
- 《JavaScript函數(shù)式編程》讀后感
- JavaScript的函數(shù)式編程基礎(chǔ)指南
- JavaScript函數(shù)式編程(Functional Programming)高階函數(shù)(Higher order functions)用法分析
相關(guān)文章
Bootstrap標(biāo)簽頁(Tab)插件切換echarts不顯示問題的解決
這篇文章主要給大家介紹了關(guān)于Bootstrap標(biāo)簽頁(Tab)插件切換echarts不顯示問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

