成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

柯里化

ormsf / 1334人閱讀

摘要:關(guān)于柯里化的概念,網(wǎng)上資料也比較多,這里就不再贅述,我們先來(lái)看幾個(gè)簡(jiǎn)單的例子需求求三個(gè)數(shù)的和解法解法使用了化,其實(shí)柯里化可以簡(jiǎn)單地理解為將原來(lái)接受兩個(gè)參數(shù)的函數(shù)變成新的接受一個(gè)參數(shù)的過(guò)程,新的函數(shù)返回一個(gè)以原有第二個(gè)參數(shù)為參數(shù)的函數(shù)。

關(guān)于柯里化的概念,網(wǎng)上資料也比較多,這里就不再贅述,我們先來(lái)看幾個(gè)簡(jiǎn)單的例子

需求

求三個(gè)數(shù)的和

解法:

1、

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

console.log(add(5, 10, 15));
const curryAdd = function(a) {
    return function(b) {
      return function(c) {
        return a + b + c;
      }
    }
}

const curryResult =  curryAdd(5)(10)(15);
 console.log(curryResult);


 const add5 = curryAdd(5);
 const add10 = add5(10);

 console.log(add10(15));

解法2使用了 curry 化,其實(shí)柯里化可以簡(jiǎn)單地理解為將原來(lái)接受兩個(gè)參數(shù)的函數(shù)變成新的接受一個(gè)參數(shù)的過(guò)程,新的函數(shù)返回一個(gè)以原有第二個(gè)參數(shù)為參數(shù)的函數(shù)。

為什么要使用 curry 化

從前面的例子對(duì)比來(lái)看,curry 化咋一看比簡(jiǎn)單的函數(shù)使用起來(lái)還有復(fù)雜,為什么我們還要大費(fèi)周章去使用它,其實(shí) curry 化有幾個(gè)有點(diǎn):

參數(shù)復(fù)用


如上面的例子中,返回新的函數(shù)保留了對(duì)原先函數(shù)參數(shù)的引用,每次調(diào)用計(jì)算不必重新傳入

提前返回,性能優(yōu)化

關(guān)于這個(gè),我們看個(gè)簡(jiǎn)單的例子--事件綁定

 var addEvent = function() {
  if(window.addEventListener) {

    el.addEventListener(type, function(e) {
      fn.call(el, e);
    }, capture)
      
    }else if(window.attachEvent) {

      el.attachEvent("on" + type, function() {
        fn.call(el, e);
      }, capture)
  }
};

以上例子中需要根據(jù)瀏覽器的兼容性進(jìn)行事件綁定,每次綁定事件都需要判斷一次

改進(jìn)后:

var addEvent = (function() {
   if(window.addEventListener) {
     return function(el, type, fn, capture) {
       el.addEventListener(type, function(e) {
         fn.call(el, e);
       }, capture)
     }
   }else if(window.attachEvent) {
     return function(el, type, fn, capture) {
       el.attachEvent("on" + type, function() {
         fn.call(el, e);
       }, capture)
     }
   }
 })();

通過(guò)自調(diào)用函數(shù)返回一個(gè)新的函數(shù),判斷邏輯只執(zhí)行了一次

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99441.html

相關(guān)文章

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

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

    wyk1184 評(píng)論0 收藏0
  • 前端進(jìn)擊的巨人(五):學(xué)會(huì)函數(shù)柯里(curry)

    摘要:函數(shù)柯里化是把支持多個(gè)參數(shù)的函數(shù)變成接收單一參數(shù)的函數(shù),并返回一個(gè)函數(shù)能接收處理剩余參數(shù),而反柯里化就是把參數(shù)全部釋放出來(lái)。但在一些復(fù)雜的業(yè)務(wù)邏輯封裝中,函數(shù)柯里化能夠?yàn)槲覀兲峁└玫膽?yīng)對(duì)方案,讓我們的函數(shù)更具自由度和靈活性。 showImg(https://segmentfault.com/img/bVburN1?w=800&h=600); 柯里化(Curring, 以邏輯學(xué)家Has...

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

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

    edgardeng 評(píng)論0 收藏0
  • JS中的柯里

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

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

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

    shixinzhang 評(píng)論0 收藏0
  • 前端基礎(chǔ)進(jìn)階(八):深入詳解函數(shù)的柯里

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

    kk_miles 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

ormsf

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<