亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

函數(shù)柯里化

Donald / 1390人閱讀

摘要:百科以上就是一個簡單的函數(shù)柯里化的實現(xiàn)。運用為什么要封裝一層呢就要說到柯里化的運用了。中最最經典的柯里化運用就是了,用于函數(shù)的值綁定,同時并非讓函數(shù)立即執(zhí)行。

概念

是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結果的新函數(shù)的技術。 from wiki百科

Function.prototype.curry = function() {
    let args = arguments;
    let that = this;
    return function() {
        return that.apply(null, [...args].concat(...arguments));
    }
}

function add() {
    let args = [...arguments];
    let sum = 0, i = 0;
    while(i < args.length) {
        sum += args[i];
        i++;
    }
    return sum;
}
console.log(add.curry(2, 3)(4))  // 9

以上就是 一個簡單的函數(shù)柯里化的實現(xiàn)。

運用

為什么要封裝一層呢?就要說到柯里化的運用了。js中最最經典的柯里化運用就是bind了, 用于函數(shù)的this值綁定, 同時并非讓函數(shù)立即執(zhí)行。

// bind實現(xiàn)
Function.prototype.bind = function (context) {
    var that = this
    var args = Array.prototype.slice.call(arguments, 1)
 
    return function() {
        return that.apply(context, args)
    }
}

還有一些網(wǎng)上的例子,日常開發(fā)中也常常會用到,如參數(shù)復用。
引用https://www.jianshu.com/p/297...

// 函數(shù)封裝后
function check(reg, txt) {
    return reg.test(txt)
}

check(/d+/g, "test")       //false
check(/[a-z]+/g, "test")    //true

// Currying后
function curryingCheck(reg) {
    return function(txt) {
        return reg.test(txt)
    }
}

var hasNumber = curryingCheck(/d+/g)
var hasLetter = curryingCheck(/[a-z]+/g)

hasNumber("test1")      // true
hasNumber("testtest")   // false
hasLetter("21212")      // false

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/104558.html

相關文章

  • 高階函數(shù)應用 —— 柯里與反柯里

    摘要:柯里化通用式上面的柯里化函數(shù)沒涉及到高階函數(shù),也不具備通用性,無法轉換形參個數(shù)任意或未知的函數(shù),我們接下來封裝一個通用的柯里化轉換函數(shù),可以將任意函數(shù)轉換成柯里化。 showImg(https://segmentfault.com/img/remote/1460000018998373); 閱讀原文 前言 在 JavaScript 中,柯里化和反柯里化是高階函數(shù)的一種應用,在這之前...

    wyk1184 評論0 收藏0
  • 前端進擊的巨人(五):學會函數(shù)柯里(curry)

    摘要:函數(shù)柯里化是把支持多個參數(shù)的函數(shù)變成接收單一參數(shù)的函數(shù),并返回一個函數(shù)能接收處理剩余參數(shù),而反柯里化就是把參數(shù)全部釋放出來。但在一些復雜的業(yè)務邏輯封裝中,函數(shù)柯里化能夠為我們提供更好的應對方案,讓我們的函數(shù)更具自由度和靈活性。 showImg(https://segmentfault.com/img/bVburN1?w=800&h=600); 柯里化(Curring, 以邏輯學家Has...

    chengtao1633 評論0 收藏0
  • JavaScript 函數(shù)式編程技巧 - 柯里

    摘要:作為函數(shù)式編程語言,帶來了很多語言上的有趣特性,比如柯里化和反柯里化。在一些函數(shù)式編程語言中,會定義一個特殊的占位變量。個人理解不知道對不對延遲執(zhí)行柯里化的另一個應用場景是延遲執(zhí)行。不斷的柯里化,累積傳入的參數(shù),最后執(zhí)行。作為函數(shù)式編程語言,JS帶來了很多語言上的有趣特性,比如柯里化和反柯里化。 這里可以對照另外一篇介紹 JS 反柯里化 的文章一起看~ 1. 簡介 柯里化(Currying)...

    edgardeng 評論0 收藏0
  • JS中的柯里

    摘要:作為函數(shù)式編程語言,帶來了很多語言上的有趣特性,比如柯里化和反柯里化。個人理解不知道對不對延遲執(zhí)行柯里化的另一個應用場景是延遲執(zhí)行。不斷的柯里化,累積傳入的參數(shù),最后執(zhí)行。 作為函數(shù)式編程語言,JS帶來了很多語言上的有趣特性,比如柯里化和反柯里化。 這里可以對照另外一篇介紹 JS 反柯里化 的文章一起看~ 1. 簡介 柯里化(Currying),又稱部分求值(Partial Evalu...

    Hancock_Xu 評論0 收藏0
  • 高級函數(shù)技巧-函數(shù)柯里

    摘要:如果你對函數(shù)式編程有一定了解,函數(shù)柯里化是不可或缺的,利用函數(shù)柯里化,可以在開發(fā)中非常優(yōu)雅的處理復雜邏輯。同樣先看簡單版本的方法,以方法為例,代碼來自高級程序設計加強版實現(xiàn)上面函數(shù),可以換成任何其他函數(shù),經過函數(shù)處理,都可以轉成柯里化函數(shù)。 我們經常說在Javascript語言中,函數(shù)是一等公民,它們本質上是十分簡單和過程化的??梢岳煤瘮?shù),進行一些簡單的數(shù)據(jù)處理,return 結果,...

    shixinzhang 評論0 收藏0
  • 前端基礎進階(八):深入詳解函數(shù)柯里

    摘要:函數(shù)被轉化之后得到柯里化函數(shù),能夠處理的所有剩余參數(shù)。因此柯里化也被稱為部分求值。那么函數(shù)的柯里化函數(shù)則可以如下因此下面的運算方式是等價的。而這里對于函數(shù)參數(shù)的自由處理,正是柯里化的核心所在。額外知識補充無限參數(shù)的柯里化。 showImg(https://segmentfault.com/img/remote/1460000008493346); 柯里化是函數(shù)的一個比較高級的應用,想要...

    kk_miles 評論0 收藏0

發(fā)表評論

0條評論

Donald

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<