今天查詢事件繫結資料的時候偶然遇到了柯里化這個詞,很感興趣,於是記錄下來供以後開發時參考,相信對其他人也有用。
柯里化是函式式程式設計裡面的術語,它是把接受多個引數的函式變換成接受乙個單一引數(最初函式的第乙個引數)的函式,並且返回接受餘下的引數而且返回結果的新函式的技術。
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...