js中的柯里化

2022-03-04 12:33:10 字數 876 閱讀 1766

今天查詢事件繫結資料的時候偶然遇到了柯里化這個詞,很感興趣,於是記錄下來供以後開發時參考,相信對其他人也有用。

柯里化是函式式程式設計裡面的術語,它是把接受多個引數的函式變換成接受乙個單一引數(最初函式的第乙個引數)的函式,並且返回接受餘下的引數而且返回結果的新函式的技術。

function add(first, second) 

//柯里化

let add1 = (num) => add(1, num)

所以,其實柯里化其實是箭頭函式的乙個語法糖,而箭頭函式又是lambda函式的乙個語法糖。

語法糖:用前端的話來說,就是polyfill,用低階的已經有的**實現乙個新的概念。

現在js裡面的柯里化也不是非要確定幾個引數了,只要意思相近即可。

乙個簡單的例子如下:

for(var i = 0; i < 5; i++), 1000);

}

因為js沒有塊級作用域,所以這段**輸出5個5。

如果要輸出01234呢?乙個方法是利用let,另乙個方法是利用柯里化。

//柯里化

var cury = (i) => , 1000)

}for(var i = 0; i < 5; i++)

乙個很現代的例子是react的事件繫結中的bind就是柯里化。

onclick=
它接受引數this,並返回乙個函式,這個函式在被window呼叫的時候還是能夠使用當初傳進去的這個this。

另乙個例子是redux裡面的dispatch。(我是看別人介紹說的,redux我還沒學,就不寫了)

JS中的柯里化 currying

curry化 與數學家 haskell curry的名字 程式語言 haskell也是以他的名字命名 柯里化通常也稱部分求值,其含義是給函式分步傳遞引數,每次傳遞引數後部分應用引數,並返回乙個更具體的函式接受剩下的引數,這中間可巢狀多層這樣的接受部分引數函式,直至返回最後結果。因此柯里化的過程是逐步...

js反柯里化

反柯里化主要是借用別人的函式,比如類陣列沒有push函式,但是可以借用push函式,push 呼叫的時候,push裡面的this值是,但是arguments.push 是不行的,因為arguments沒有這個方法,那怎麼辦呢,反柯里化就是要修改裡面的this值,所謂的this泛化,讓this程式設計...

js函式柯里化

什麼是函式柯里化?在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。這個技術由 christopher strachey 以邏輯學家 haskell curry 命名的,儘管它是 mos...