摘要:于是開始各種搜索,先是知道了多個連續(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
摘要:與反柯里化什么是柯里化與反柯里化純函數(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...
摘要:柯里化通用式上面的柯里化函數(shù)沒涉及到高階函數(shù),也不具備通用性,無法轉(zhuǎn)換形參個數(shù)任意或未知的函數(shù),我們接下來封裝一個通用的柯里化轉(zhuǎn)換函數(shù),可以將任意函數(shù)轉(zhuǎn)換成柯里化。 showImg(https://segmentfault.com/img/remote/1460000018998373); 閱讀原文 前言 在 JavaScript 中,柯里化和反柯里化是高階函數(shù)的一種應(yīng)用,在這之前...
摘要:高階函數(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 ...
摘要:函數(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...
摘要:引言上一節(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ù)柯里化,通過介紹其定義、比較常見的...
閱讀 3322·2023-04-25 19:42
閱讀 1339·2021-11-23 10:11
閱讀 2281·2021-11-16 11:51
閱讀 1601·2019-08-30 15:54
閱讀 2047·2019-08-29 18:44
閱讀 1625·2019-08-23 18:24
閱讀 498·2019-08-23 17:52
閱讀 1774·2019-08-23 15:33