1. 程式人生 > 其它 >函式柯里化curry

函式柯里化curry

一、什麼是函式柯里化

柯里化來源於偏應用函式 偏函式一般也是會固定函式的幾個引數,但是一般第一個引數為一個函式,作為被返回並執行的函式 函式柯里化:就是把多引數函式分解為多return的單引數函式
柯里化前
function func (a, b, c){
  return a + b + c;
}
//柯里化為
function func1 (a){
  return function (b){
    return function (c){
      return a + b + c;
    }
  }
}
//呼叫時
func(1, 2, 3)//6
func1(1)(2)(3);//6

簡單利用柯里化實現功能

function sum() {
    console.log(arguments,'外部快取')
    var _args = Array.from(arguments);//類陣列轉陣列
    //將函式的引數快取起來(必包)
    function _sumer() {
        _args.push(...arguments);//將多次傳入的引數放到陣列中
        return _sumer;
    }
    //實現業務功能:求和
    _sumer.toS = function() {
        return _args.reduce((acc,cur) => {
            
return acc+cur; },0) } return _sumer; } console.log(sum(1,2)(3)(5).toS());//1,2引數傳給sum 3,5引數傳給_sumer函式

二、柯里化的優缺點

事實上柯里化是一種“預載入”函式的方法,通過傳遞較少的引數, 得到一個已經記住了這些引數的新函式,某種意義上講,這是一種 對引數的“快取”,是一種非常高效的編寫函式的方法