JS實現柯里化

2021-09-12 01:34:31 字數 755 閱讀 6483

不想看我胡扯的朋友直接進入完整**章節哈。

我們將sum(a)(b)(c)拆分,觀察結構得出結論:sum(a)(b)返回乙個函式,如果想達到引數鏈式呼叫sum(a)(b)(c)也是乙個函式,不是我們想要的和,我們可以將該函式無引數執行一次:sum(a)(b)(c)(),這樣設計可以做到單獨考慮無引數情況時返回和。

求和的**:

var add = function

()var sum = function

()else

}return __curry;

}console.log(sum(1)(2)()); // 3

console.log(sum(4)(5)(6)()); // 15

複製**

我們還可以將思路擴散一下,寫乙個可擴充套件的柯里化函式,將add作為第乙個引數傳入柯里函式,我相信聰明的你可以看明白下面的示例的:

var add = function

()var curry = function(func)else

}return __curry;

}console.log(curry(add,1)(2)()); // 3

console.log(curry(add,4)(5)(6)()); // 15

複製**

js反柯里化

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

js函式柯里化

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

js 函式柯里化

函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的 來說明函式柯里化的原理 circle函式,接受半徑r和 function circle r,p 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積 不管怎麼樣,是不會變的,因此我們將他寫...