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

資訊專欄INFORMATION COLUMN

從 ES6 高階箭頭函數(shù)理解函數(shù)柯里化

Hujiawei / 3254人閱讀

摘要:于是開始各種搜索,先是知道了多個連續(xù)箭頭函數(shù)就是的多次柯里化的寫法,對于函數(shù)柯里化,很久以前就知道這個名次,但是并不理解,也沒有去了解??梢詫σ粋€連續(xù)的箭頭函數(shù)進行多次柯里化。

前言:第一次看到多個連續(xù)箭頭函數(shù)是在一個 react 項目中,然鵝確認(rèn)了下眼神,并不是對的人,因為看得一臉懵逼。em......于是開始各種搜索,先是知道了多個連續(xù)箭頭函數(shù)就是 es6 的多次柯里化的寫法,對于函數(shù)柯里化,很久以前就知道這個名次,但是并不理解,也沒有去了解。為了弄明白多個連續(xù)箭頭函數(shù),開始了簡化之路。

首先看到了這樣的一個例子:

let add = a => b => a + b

以上是一個很簡單的相加函數(shù),把它轉(zhuǎn)化成 ES5 的寫法如下:

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

再簡化一下,可以寫成如下形式:

let add = function(a) {
    var param = a;
    var innerFun = function(b) {
        return param + b;
    }
    return innerFun;
}

雖然好像沒什么意義,但是很顯然上述使用了閉包,而且該函數(shù)的返回值是一個函數(shù)。其實,這就是高階函數(shù)的定義:以函數(shù)為參數(shù)或者返回值是函數(shù)的函數(shù)。

那么,這跟柯里化有什么關(guān)系呢?

再來看一下 wiki 里面對柯里化的定義把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)的函數(shù),并且返回(接受余下的參數(shù)而且返回結(jié)果的)新函數(shù)的技術(shù)。可以對一個連續(xù)的箭頭函數(shù)進行多次柯里化。n 個連續(xù)箭頭組成的函數(shù)實際上就是柯里化了 n - 1 次,而前 n - 1 次調(diào)用,其實是提前將參數(shù)傳遞進去,并沒有調(diào)用最內(nèi)層函數(shù)體,最后一次調(diào)用才會調(diào)用最內(nèi)層函數(shù)體,并返回最內(nèi)層函數(shù)體的返回值。

如果把函數(shù)柯里化和閉包聯(lián)系在一起,就比較好理解了。

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

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

相關(guān)文章

  • 柯里簡介

    摘要:與反柯里化什么是柯里化與反柯里化純函數(shù)函數(shù)結(jié)果只受傳入?yún)?shù)影響,參數(shù)一定,結(jié)果一定。寫法柯里化接受一次性傳入多個參數(shù)調(diào)用的函數(shù),也可以傳入部分參數(shù)調(diào)用,最后使它返回一個單一參數(shù)的函數(shù)去處理,并且返回。 call與apply反柯里化? 什么是柯里化與反柯里化?純函數(shù)函數(shù)結(jié)果只受傳入?yún)?shù)影響,參數(shù)一定,結(jié)果一定。高階函數(shù)一個函數(shù)可以接收另一個函數(shù)作為參數(shù),這種函數(shù)稱為高階函數(shù)。 funct...

    songjz 評論0 收藏0
  • 高階函數(shù)應(yīng)用 —— 柯里與反柯里

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

    wyk1184 評論0 收藏0
  • ES6函數(shù)與Lambda演算

    摘要:高階函數(shù)函數(shù)式編程中,接受函數(shù)作為參數(shù),或者返回一個函數(shù)作為結(jié)果的函數(shù)通常就被稱為高階函數(shù)。均屬于高階函數(shù),高階函數(shù)并不神秘,我們?nèi)粘>幊桃矔玫健⒖佳菟愫瘮?shù)式編程指南入門康托爾哥德爾圖靈永恒的金色對角線原文函數(shù)與演算 緣起 造了一個輪子,根據(jù)GitHub項目地址,生成項目目錄樹,直觀的展現(xiàn)項目結(jié)構(gòu),以便于介紹項目。歡迎Star。 repository-tree 技術(shù)棧: ES6 ...

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

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

    chengtao1633 評論0 收藏0
  • 【進階 6-2 期】深入高階函數(shù)應(yīng)用之柯里

    摘要:引言上一節(jié)介紹了高階函數(shù)的定義,并結(jié)合實例說明了使用高階函數(shù)和不使用高階函數(shù)的情況。我們期望函數(shù)輸出,但是實際上調(diào)用柯里化函數(shù)時,所以調(diào)用時就已經(jīng)執(zhí)行并輸出了,而不是理想中的返回閉包函數(shù),所以后續(xù)調(diào)用將會報錯。引言 上一節(jié)介紹了高階函數(shù)的定義,并結(jié)合實例說明了使用高階函數(shù)和不使用高階函數(shù)的情況。后面幾部分將結(jié)合實際應(yīng)用場景介紹高階函數(shù)的應(yīng)用,本節(jié)先來聊聊函數(shù)柯里化,通過介紹其定義、比較常見的...

    stackvoid 評論0 收藏0

發(fā)表評論

0條評論

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