茄子在线看片免费人成视频,午夜福利精品a在线观看,国产高清自产拍在线观看,久久综合久久狠狠综合

    <s id="ddbnn"></s>
  • <sub id="ddbnn"><ol id="ddbnn"></ol></sub>

  • <legend id="ddbnn"></legend><s id="ddbnn"></s>

    JavaScript函數(shù)柯里化詳解
    來源:易賢網(wǎng) 閱讀:890 次 日期:2016-07-06 13:38:29
    溫馨提示:易賢網(wǎng)小編為您整理了“JavaScript函數(shù)柯里化詳解”,方便廣大網(wǎng)友查閱!

    柯里化函數(shù)主要起到預處理的作用。接下來通過本文給大家介紹JavaScript函數(shù)柯里化有什么作用及實現(xiàn)bind方法,非常具有參考價值特此分享供大家學習

    什么是柯里化

    柯里化是這樣的一個轉(zhuǎn)換過程,把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(譯注:最初函數(shù)的第一個參數(shù))的函數(shù),如果其他的參數(shù)是必要的,返回接受余下的參數(shù)且返回結(jié)果的新函數(shù)。

    柯理化函數(shù)思想:一個js預先處理的思想;利用函數(shù)執(zhí)行可以形成一個不銷毀的作用域的原理,把需要預先處理的內(nèi)容都儲存在這個不銷毀的作用域中,并且返回一個小函數(shù),以后我們執(zhí)行的都是小函數(shù),在小函數(shù)中把之前預先存儲的值進行相關的操作處理即可;

    柯里化函數(shù)主要起到預處理的作用;

    bind方法的作用:把傳遞進來的callback回調(diào)方法中的this預先處理為上下文context;

    bind方法實現(xiàn)原理1代碼如下所示:

    /**

    * bind方法實現(xiàn)原理1

    * @param callback [Function] 回調(diào)函數(shù)

    * @param context [Object] 上下文

    * @returns {Function} 改變this指向的函數(shù)

    */

    function bind(callback,context) {

    var outerArg = Array.prototype.slice.call(arguments,2);// 表示取當前作用域中傳的參數(shù)中除了fn,context以外后面的參數(shù);

    return function (){

    var innerArg = Array.prototype.slice.call(arguments,0);//表示取當前作用域中所有的arguments參數(shù);

    callback.apply(context,outerArg.concat(innerArg));

    }

    }

    下面一段代碼模仿在原型鏈上的bind實現(xiàn)原理

    /**

    * 模仿在原型鏈上的bind實現(xiàn)原理(柯理化函數(shù)思想)

    * @param context [Object] 上下文

    * @returns {Function} 改變this指向的函數(shù)

    */

    Function.prototype.mybind = function mybind (context) {

    var _this = this;

    var outArg = Array.prototype.slice.call(arguments,1);

    // 兼容情況下

    if('bind' in Function.prototype) {

    return this.bind.apply(this,[context].concat(outArg));

    }

    // 不兼容情況下

    return function () {

    var inArg = Array.prototype.slice.call(arguments,0);

    inArg.length === 0?inArg[inArg.length]=window.event:null;

    var arg = outArg.concat(inArg);

    _this.apply(context,arg);

    }

    }

    函數(shù)柯里化(Currying)

    在計算機科學中,柯里化是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術

    柯里化就是預先將某些參數(shù)傳入,得到一個簡單的函數(shù)。但是預先傳入的參數(shù)被保存在閉包中,因此會有一些奇特的特性。比如:

    例:

    var adder = function(num) {

    return function(y) {

    return num + y;

    }

    }

    var inc = adder(1);

    var dec = adder(-1);

    //inc, dec現(xiàn)在是兩個新的函數(shù),作用是將傳入的參數(shù)值(+/-)1

    alert(inc(99));//100

    alert(dec(101));//100

    alert(adder(100)(2));//102

    alert(adder(2)(100));//102

    以上內(nèi)容是小編給大家介紹的JavaScript函數(shù)柯里化及實現(xiàn)bind方法的方法,希望對大家有所幫助!

    更多信息請查看網(wǎng)絡編程
    易賢網(wǎng)手機網(wǎng)站地址:JavaScript函數(shù)柯里化詳解

    2026上岸·考公考編培訓報班

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)