最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談javascript函數(shù)式編程

 更新時間:2015年09月06日 09:50:25   投稿:hebedich  
你是否知道JavaScript其實也是一個函數(shù)式編程語言呢?本文將教你如何利用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)試。

相關(guān)文章

  • 原生JS與CSS實現(xiàn)軟件卸載對話框功能

    原生JS與CSS實現(xiàn)軟件卸載對話框功能

    今天給大家分享一個特別有意思的軟件卸載對話框功能,本段代碼是基于js 與css實現(xiàn)的,感興趣的朋友跟隨小編一起看看吧
    2019-12-12
  • 解決百度Echarts圖表坐標(biāo)軸越界的方法

    解決百度Echarts圖表坐標(biāo)軸越界的方法

    Echarts是由百度提供的數(shù)據(jù)可視化解決方案, 這篇文章主要介紹了解決百度Echarts圖表坐標(biāo)軸越界的方法,非常具有實用價值,需要的朋友可以參考下
    2018-10-10
  • 微信JSSDK上傳圖片

    微信JSSDK上傳圖片

    做過微信開發(fā)的都知道,在部分android機型里微信不支持網(wǎng)頁上傳圖片的,這是由于這些機型的文件上傳存在內(nèi)存泄漏,會導(dǎo)致微信閃退,所以微信內(nèi)置瀏覽器將文件上傳屏蔽,本篇文章給大家介紹使用微信jssdk如何上傳圖片,需要的朋友可以關(guān)注下
    2015-08-08
  • 原生js實現(xiàn)簡單貪吃蛇小游戲

    原生js實現(xiàn)簡單貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了原生js實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • JavaScript運動原理基礎(chǔ)知識詳解

    JavaScript運動原理基礎(chǔ)知識詳解

    這篇文章主要介紹了JavaScript運動原理基礎(chǔ)知識詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • Bootstrap標(biāo)簽頁(Tab)插件切換echarts不顯示問題的解決

    Bootstrap標(biāo)簽頁(Tab)插件切換echarts不顯示問題的解決

    這篇文章主要給大家介紹了關(guān)于Bootstrap標(biāo)簽頁(Tab)插件切換echarts不顯示問題的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • JS中的async與await怎么使用

    JS中的async與await怎么使用

    這篇文章主要介紹了JS的async/await怎么使用,簡單來說,async/await是基于promises的語法糖,使異步代碼更易于編寫和閱讀,下面來看詳細(xì)的介紹內(nèi)容吧。需要的小伙伴也可以參考一下
    2021-12-12
  • js對字符的驗證方法匯總

    js對字符的驗證方法匯總

    這篇文章主要介紹了js對字符的驗證方法,實例匯總了漢字驗證、手機驗證、郵箱驗證、身份證號驗證等各種常用技巧,需要的朋友可以參考下
    2015-02-02
  • 小程序?qū)崿F(xiàn)計時器小功能

    小程序?qū)崿F(xiàn)計時器小功能

    這篇文章主要為大家詳細(xì)介紹了小程序?qū)崿F(xiàn)計時器小功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • js實現(xiàn)人才網(wǎng)站職位選擇功能的方法

    js實現(xiàn)人才網(wǎng)站職位選擇功能的方法

    這篇文章主要介紹了js實現(xiàn)人才網(wǎng)站職位選擇功能的方法,涉及javascript動態(tài)操作頁面元素結(jié)點的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08

最新評論

灌云县| 徐汇区| 扎赉特旗| 莲花县| 高唐县| 永春县| 沂水县| 罗甸县| 肇州县| 汽车| 屯留县| 泽库县| 海晏县| 博客| 宁国市| 纳雍县| 喀喇| 清水河县| 基隆市| 肇源县| 石景山区| 松滋市| 宁波市| 荥阳市| 格尔木市| 承德市| 清苑县| 昌平区| 宣武区| 石家庄市| 霞浦县| 卫辉市| 元谋县| 南靖县| 太仓市| 邢台县| 宣汉县| 拜城县| 淮滨县| 鸡泽县| 花莲市|