把接受多個引數的函式變換成接受單一引數的函式,並且返回接受餘下的引數且返回結果的新函式的技術
// 普通say函式
function
say( company, academy, name)
,專業是
$,名字是$`
)}//呼叫
say(
'a',
'b',
'c')
// 柯里化
function
say(company)
,專業是
$,名字是$`
)}}}
//呼叫
say(
'a')
('b')(
'c')
// fn:被柯里化的函式
function
curry
(fn)
else}}
}/** 使用
*/let r =
curry
(say)r(
'a')
('b')(
'c')
//output: 我的公司是a,專業是b,名字是c
let r1 =r(
'a')
('b'
)//這樣就可以減少重複引數的呼叫r1(
'd')
//output: 我的公司是a,專業是b,名字是dr1(
'e')
//output: 我的公司是a,專業是b,名字是e
使用柯里化讓程式具有了更多的自由度,但柯里化用到了arguments物件、遞迴、閉包等,頻繁使用會給效能帶來影響, 只有在情況變得複雜時,才是柯里化大顯身手的時候 js函式柯里化
什麼是函式柯里化?在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。這個技術由 christopher strachey 以邏輯學家 haskell curry 命名的,儘管它是 mos...
js 函式柯里化
函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的 來說明函式柯里化的原理 circle函式,接受半徑r和 function circle r,p 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積 不管怎麼樣,是不會變的,因此我們將他寫...
js 函式柯里化
函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的 來說明函式柯里化的原理 circle函式,接受半徑r和 function circle r,p 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積 不管怎麼樣,是不會變的,因此我們將他寫...