記得曾經被柯里化函數折磨的不輕,今天沒事來重新研究研究。
先來看看柯里化函數的定義:
柯里化(Currying)指的是將原來接受兩個參數的函數變成新的接受一個參數的函數的過程。新的函數返回一個以原有第二個參數爲參數的函數。
光看定義是不是一臉矇蔽,其實我也是這樣的,舉個例子就明白了,先定義一個有兩個參數的簡單函數
function sum(a,b){
return a+b;
};
我們來把它柯里化:
function sum(a){
return function another(b){
return a+b;
}
}
那怎麼調用呢?
sum(1)(2);
//3
這有點像閉包呀看到沒,其實就是閉包,a 也就成了哪個系統不被回收的變量,這樣就可以讓another函數隨時訪問,a適用放一些全局的配置信息。這樣就不用每次執行的時候都傳入了。