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

Javascript中的高階函數(shù)介紹

 更新時(shí)間:2015年03月15日 10:15:42   投稿:junjie  
這篇文章主要介紹了Javascript中的高階函數(shù)介紹,本文講解了什么是高階函數(shù)、Javascript的高階函數(shù)、還原高階函數(shù)、高階函數(shù)使用實(shí)例等內(nèi)容,需要的朋友可以參考下

這是一個(gè)有趣的東西,這或許也在說(shuō)明Javascript對(duì)象的強(qiáng)大。我們要做的就是在上一篇說(shuō)到的那樣,輸出一個(gè)Hello,World,而輸入的東西是print('Hello')('World'),而這就是所謂的高階函數(shù)。

高階函數(shù)

高階看上去就像是一種先進(jìn)的編程技術(shù)的一個(gè)深?yuàn)W術(shù)語(yǔ),一開(kāi)始我看到的時(shí)候我也這樣認(rèn)為的。

Javascript的高階函數(shù)

然而,高階函數(shù)只是將函數(shù)作為參數(shù)或返回值的函數(shù)。以上面的Hello,World作為一個(gè)簡(jiǎn)單的例子。

復(fù)制代碼 代碼如下:

var Moqi = function(p1){
    this.add = function (p2){
        return p1 + ' ' + p2;
    };
    return add;
};

我們便可以這樣使用這個(gè)函數(shù)

復(fù)制代碼 代碼如下:

console.log(Moqi('Hello')('World'));

或許這個(gè)過(guò)程有點(diǎn)混亂,看看詳細(xì)一點(diǎn)的。
復(fù)制代碼 代碼如下:

> typeof Moqi('Hello')
<- "function"
> Moqi('Hello')
<- function (p2){
        return p1 + ' ' + p2;
    }

也就是說(shuō)實(shí)際上Moqi('Hello')是一個(gè)函數(shù),Moqi('Hello')
復(fù)制代碼 代碼如下:

> var m = Moqi('Hello')       
 > m('World')
 > "Hello,World"
 

從上面的情況來(lái)看,高階函數(shù)可以使代碼更簡(jiǎn)潔、高效。自然而然地我們也可以創(chuàng)建一個(gè)函數(shù),以便于:
復(fù)制代碼 代碼如下:

 > Moqi('Hello')('World')('Phodal')
 > "Hello,World Phodal"

于是就有了這樣一個(gè)函數(shù)
復(fù)制代碼 代碼如下:

var Moqi = function(p1){
    return  function (p2){
        return function(p3){
            return p1 + ',' + p2 + ' ' +p3;
        }
    };
};

還原高階函數(shù)

越來(lái)越復(fù)雜,需要引入高階函數(shù)抽象的信號(hào)是出現(xiàn)重復(fù)或者相似的代碼。然后,我們先一步步還原到之前的函數(shù):

復(fù)制代碼 代碼如下:

var Moqi = function(p1){
     this.add =  function (p2){
        return function(p3){
            return p1 + ',' + p2 + ' ' +p3;
        }
    };
    return this.add;
};

接著再創(chuàng)建一個(gè)新的函數(shù)
復(fù)制代碼 代碼如下:

var Moqi = function(p1){
     this.add =  function (p2){
        this.add1 = function(p3){
            return p1 + ',' + p2 + ' ' +p3;
        };
        return this.add1;
    };
    return this.add;
};

使用javascript中的call方法,就會(huì)有:
復(fù)制代碼 代碼如下:

var Moqi = function(p1){
    var self = this;

    function fd(p2) {
        this.add1 = function (p3) {
            return p1 + ',' + p2 + ' ' + p3;
        };
    }

    self.add =  function (p2){
        fd.call(this, p2);
        return this.add1;
    };
    return self.add;
};

高階函數(shù)實(shí)例

上面的例子只是為了好玩,下面的例子是真正的運(yùn)用。

復(fù)制代碼 代碼如下:

add = function(a,b){
    return a + b;
};

function math(func,array){
    return func(array[0],array[1]);
}

console.log(math(add,[1,2]));

> math(add,[1,2])
< 3


在上面的例子中傳進(jìn)去的add是一個(gè)參數(shù),而在return的時(shí)候剛是一個(gè)函數(shù)。如在jQuery中有一個(gè)函數(shù)用于
復(fù)制代碼 代碼如下:

// Convert dashed to camelCase; used by the css and data modules
// Microsoft forgot to hump their vendor prefix (#9572)
camelCase: function( string ) {
    return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
},

也是這樣的運(yùn)用,可見(jiàn)高階函數(shù)對(duì)于掌握好JS的重要。。

相關(guān)文章

  • 詳解JavaScript如何準(zhǔn)確獲取任意變量的數(shù)據(jù)類(lèi)型

    詳解JavaScript如何準(zhǔn)確獲取任意變量的數(shù)據(jù)類(lèi)型

    js是弱類(lèi)型語(yǔ)言,或者說(shuō)是動(dòng)態(tài)語(yǔ)言,在定義變量時(shí)我們可以不提前聲明變量的類(lèi)型,也可以在變量聲明后賦予不同類(lèi)型的值。所以本文為大家詳解一下JavaScript如何準(zhǔn)確獲取任意變量的數(shù)據(jù)類(lèi)型,需要的可以參考一下
    2022-06-06
  • Javascript中字符串replace方法的第二個(gè)參數(shù)探究

    Javascript中字符串replace方法的第二個(gè)參數(shù)探究

    當(dāng)我們要把一段字符串中的某些指定字符替換掉,第一時(shí)間想到的就是replace方法,他的用法很簡(jiǎn)單,W3school上講的清晰易懂。網(wǎng)上有關(guān)replace的文章也有很多了,那么這篇這里主要聊聊它的第二個(gè)參數(shù),下面來(lái)一起看看,注意閱讀本文需要對(duì)replace方法有一定了解。
    2016-12-12
  • js 文件引入實(shí)現(xiàn)代碼

    js 文件引入實(shí)現(xiàn)代碼

    項(xiàng)目前端的文件和后臺(tái)開(kāi)發(fā)分離,只要后臺(tái)開(kāi)發(fā)更新svn前端的js,css文件都會(huì)更新,以前引用的是一個(gè)js文件如AA.js,由于想在項(xiàng)目中引用jquery庫(kù),如果在每個(gè)文件的頭部都引讓他們從新寫(xiě)入這個(gè)jq文件不太可能
    2010-04-04
  • 微信小程序傳值(傳遞數(shù)據(jù))的一些方法匯總

    微信小程序傳值(傳遞數(shù)據(jù))的一些方法匯總

    在微信小程序的開(kāi)發(fā)中,我們會(huì)經(jīng)常遇到頁(yè)面間數(shù)據(jù)傳遞或者相互影響的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于微信小程序傳值(傳遞數(shù)據(jù))的一些方法,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Parcel.js + Vue 2.x 極速零配置打包體驗(yàn)教程

    Parcel.js + Vue 2.x 極速零配置打包體驗(yàn)教程

    這篇文章主要介紹了Parcel.js + Vue 2.x 極速零配置打包體驗(yàn) 的相關(guān)資料,需要的朋友可以參考下
    2017-12-12
  • 關(guān)于JavaScript數(shù)組對(duì)象去重的幾種方法

    關(guān)于JavaScript數(shù)組對(duì)象去重的幾種方法

    這篇文章主要介紹了關(guān)于JavaScript數(shù)組對(duì)象去重的幾種方法,不管是map對(duì)象的特性還是reduce方法都是很好用的去重方法,需要的朋友可以參考下
    2023-04-04
  • JavaScript如何借用構(gòu)造函數(shù)繼承

    JavaScript如何借用構(gòu)造函數(shù)繼承

    這篇文章主要介紹了JavaScript如何借用構(gòu)造函數(shù)繼承,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • drag-and-drop實(shí)現(xiàn)圖片瀏覽器預(yù)覽

    drag-and-drop實(shí)現(xiàn)圖片瀏覽器預(yù)覽

    chrome的drag and drop API,它能將本地的圖片放到瀏覽器中進(jìn)行預(yù)覽,猜想一下當(dāng)我們把圖片拖拽到瀏覽器里會(huì)發(fā)生什么事情,你的瀏覽器試圖打開(kāi)一個(gè)新的頁(yè)面并加載這個(gè)圖片。這篇文章給我們介紹drag-and-drop實(shí)現(xiàn)圖片瀏覽器預(yù)覽,需要的朋友可以參考下
    2015-08-08
  • layer彈出層自定義提交取消按鈕的例子

    layer彈出層自定義提交取消按鈕的例子

    今天小編就為大家分享一篇layer彈出層自定義提交取消按鈕的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • BootstrapTable refresh 方法使用實(shí)例簡(jiǎn)單介紹

    BootstrapTable refresh 方法使用實(shí)例簡(jiǎn)單介紹

    本文就bootstrapTable refresh 方法如何傳遞參數(shù)做簡(jiǎn)單舉例說(shuō)明,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-02-02

最新評(píng)論

寿阳县| 长子县| 集贤县| 孙吴县| 双江| 富民县| 嘉峪关市| 晋州市| 独山县| 泰和县| 云林县| 房产| 紫金县| 龙海市| 芷江| 永城市| 墨玉县| 江安县| 阜宁县| 修文县| 拜泉县| 三原县| 嵊泗县| 九寨沟县| 攀枝花市| 夏河县| 罗江县| 安庆市| 手机| 溧阳市| 上饶县| 铜川市| 保亭| 深泽县| 连城县| 夏邑县| 广饶县| 涞源县| 富蕴县| 佛山市| 哈尔滨市|