慕碼人2483693
2018-12-18 17:15:39
1.js函數柯里化有什么好處呢?感覺看了一些網站的講解還是很模糊,比如:function add(a, b) { return a + b;}function curryingAdd(a) { return function(b) { return a + b; }}add(1, 2); // 3curryingAdd(1)(2); // 3都可以實現add功能,那柯里化的好處在哪呢?2.什么情況下要用柯里化呢?最好能舉一些簡單易懂的例子。
1 回答

SMILET
TA貢獻1796條經驗 獲得超4個贊
curry函數可以接受一個函數,我們暫且稱之為原始函數,返回的也是一個函數,柯里化函數,這個返回的柯里化函數功能十分強大,他在執行的過程中,不斷的返回一個貯存了傳入參數的函數,直到觸發了原始函數執行的條件。這么說比較概括,那么就舉個例子來說明一下:
原始函數:
????var?add?=?(x,?y)?=>?x?+?y
柯里化函數:
????var?curryAdd?=?curry(add)
這個add需要兩個參數,但是我們的curryAdd執行可以傳入更少的參數,當傳入的參數少于add需要的參數的時候,add函數并不會執行,curryAdd就會將這個參數記下來,并且返回另外一個函數,這個函數可以繼續執行傳入參數,我們會有一個變量專門記錄傳入參數的情況,如果傳入參數的總數等于add需要參數的總數,我們就激活了原始參數執行,就會返回我們想要的結果。
? ? // 此時只傳入了一個參數 根據判斷返回的是一個函數
? ? var add2 = curryAdd(2)
? ? // add2 = function(...) {}
? ? // 此時累計傳入了兩個參數 等于了add需要參數的總和 所以返回的是一個結果
? ? // 相當于執行了add(2)(3)
? ? var result = add2(3)
? ? // result = 5
curry的原理實現
添加回答
舉報
0/150
提交
取消