從 ES6 高階箭頭函式理解函式柯里化

2021-09-05 03:45:10 字數 833 閱讀 5319

前言:第一次看到多個連續箭頭函式是在乙個 react 專案中,然鵝確認了下眼神,並不是對的人,因為看得一臉懵逼。em......於是開始各種搜尋,先是知道了多個連續箭頭函式就是 es6 的多次柯里化的寫法,對於函式柯里化,很久以前就知道這個名次,但是並不理解,也沒有去了解。為了弄明白多個連續箭頭函式,開始了簡化之路。
首先看到了這樣的乙個例子:

let add = a => b => a + b
以上是乙個很簡單的相加函式,把它轉化成 es5 的寫法如下:

let add = function(a) 

}

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

let add = function(a) 

return innerfun;

}

雖然好像沒什麼意義,但是很顯然上述使用了閉包,而且該函式的返回值是乙個函式。其實,這就是高階函式的定義:以函式為引數或者返回值是函式的函式。

那麼,這跟柯里化有什麼關係呢?

再來看一下 wiki 裡面對柯里化的定義把接受多個引數的函式變換成接受乙個單一引數的函式,並且返回(接受餘下的引數而且返回結果的)新函式的技術。可以對乙個連續的箭頭函式進行多次柯里化。n 個連續箭頭組成的函式實際上就是柯里化了 n - 1 次,而前 n - 1 次呼叫,其實是提前將引數傳遞進去,並沒有呼叫最內層函式體,最後一次呼叫才會呼叫最內層函式體,並返回最內層函式體的返回值。

如果把函式柯里化和閉包聯絡在一起,就比較好理解了。

ES6 箭頭函式理解

一 關於箭頭函式的基本使用 以前的寫法 const add function a,b 箭頭函式 將普通函式的 function 關鍵字刪掉,在小括弧與大括弧中間加上1個箭頭 用法與普通函式一樣。const sayhi a,b 二 關於箭頭函式的引數 如果引數只有乙個,那麼包圍引數的小括弧 可以省略,...

高階函式與ES6多箭頭函式(柯里化)

所謂高階函式,就是乙個函式就可以接收另乙個函式作為引數,或者是返回乙個函式。例如 var add function add a 呼叫 add 2 3 即可獲得結果常見的高階函式有map reduce filter sort等 1 map map接受乙個函式作為引數,不改變原來的陣列,只是返回乙個全新...

es6箭頭函式

本例是在了解es6知識後在原來定義函式的基礎上進行理解var searchvalue 查詢匹配物件 var button var input var select button if searchvalue.input undefined button.click else 重新整理 tableli...