淺談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ù)傳進(jìn)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ù),傳進(jìn)一個匿名函數(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é)束語
實(shí)際的應(yīng)用中,不會囿于函數(shù)式或者面向?qū)ο?,通常是兩者混合使用,事?shí)上,很多主流的面向?qū)ο笳Z言都在不斷的完善自己,比如加入一些函數(shù)式編程語言的特征等,JavaScript 中,這兩者得到了良好的結(jié)合,代碼不但可以非常簡單,優(yōu)美,而且更易于調(diào)試。
- Javascript中的高階函數(shù)介紹
- Javascript 高階函數(shù)使用介紹
- JS高階函數(shù)原理與用法實(shí)例分析
- JavaScript函數(shù)式編程(Functional Programming)純函數(shù)用法分析
- JavaScript函數(shù)式編程(Functional Programming)聲明式與命令式實(shí)例分析
- Javascript函數(shù)式編程簡單介紹
- JavaScript 函數(shù)式編程實(shí)踐(來自IBM)
- javascript函數(shù)式編程實(shí)例分析
- 探究JavaScript函數(shù)式編程的樂趣
- 《JavaScript函數(shù)式編程》讀后感
- JavaScript的函數(shù)式編程基礎(chǔ)指南
- JavaScript函數(shù)式編程(Functional Programming)高階函數(shù)(Higher order functions)用法分析
相關(guān)文章
獲取網(wǎng)站跟路徑的javascript代碼(站點(diǎn)及虛擬目錄)
js獲取網(wǎng)站根路徑(站點(diǎn)及虛擬目錄) ,需要的朋友可以參考下。2009-10-10JS實(shí)現(xiàn)的JSON數(shù)組去重算法示例
這篇文章主要介紹了JS實(shí)現(xiàn)的JSON數(shù)組去重算法,結(jié)合實(shí)例形式分析了javascript針對json數(shù)組的遍歷、判斷實(shí)現(xiàn)去重復(fù)功能相關(guān)操作技巧,需要的朋友可以參考下2018-04-04Javascript中字符串相關(guān)常用的使用方法總結(jié)
本篇文章主要介紹了Javascript中字符串相關(guān)常用的使用方法。具有很好的參考價值。下面跟著小編一起來看下吧2017-03-03JavaScript實(shí)現(xiàn)10秒后再次獲取驗(yàn)證碼
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)10秒后再次獲取驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-12-12uni-app 百度語音識別文字并展示功能實(shí)現(xiàn)
這篇文章主要介紹了uni-app 百度語音識別文字并展示功能實(shí)現(xiàn),本文主要寫的是 uniapp實(shí)現(xiàn)語音輸入并展示在頁面上,純前端,不涉及后端,需要的朋友可以參考下2023-12-12javascript 表格內(nèi)容排序 簡單操作示例代碼
本文為大家詳細(xì)介紹下javascript實(shí)現(xiàn)表格內(nèi)容排序,喜歡的朋友可以參考下2014-01-01js的window.showModalDialog及window.open用法實(shí)例分析
這篇文章主要介紹了js的window.showModalDialog及window.open用法,實(shí)例分析了window.showModalDialog與window.open方法的定義、功能與使用技巧,需要的朋友可以參考下2015-01-01