1. 程式人生 > 其它 >什麼是js柯里化(curry)?

什麼是js柯里化(curry)?

  在數學和電腦科學中,柯里化是一種將使用多個引數的一個函式轉換成一系列使用一個引數的函式的技術。

  舉例來說,一個接收3個引數的普通函式,在進行柯里化後,柯里化版本的函式接收一個引數並返回接收下一個引數的函式,該函式返回一個接收第三個引數的函式。最後一個函式在接收第三個引數後,

  將之前接收到的三個引數應用於原普通函式中,並返回最終結果。

  來看這個例子:

//普通函式
function fn(a,b,c,d,e) {
  console.log(a,b,c,d,e)
}
//生成的柯里化函式
let _fn = curry(fn);

_fn(1,2,3,4,5);     // print: 1,2,3,4,5
_fn(1)(2)(3,4,5);   // print: 1,2,3,4,5
_fn(1,2)(3,4)(5);   // print: 1,2,3,4,5
_fn(1)(2)(3)(4)(5); // print: 1,2,3,4,5

  對於已經柯里化後的_fn函式來說,當接收的引數數量與原函式的形引數量相同時,執行原函式;

  當接收的引數數量小於原函式的形引數量時,返回一個函式用於接收剩餘的引數,直至接收的引數數量與形引數量一致,執行原函式。