函式柯里化curry
阿新 • • 發佈:2021-09-01
一、什麼是函式柯里化
柯里化來源於偏應用函式 偏函式一般也是會固定函式的幾個引數,但是一般第一個引數為一個函式,作為被返回並執行的函式 函式柯里化:就是把多引數函式分解為多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函式
二、柯里化的優缺點
事實上柯里化是一種“預載入”函式的方法,通過傳遞較少的引數, 得到一個已經記住了這些引數的新函式,某種意義上講,這是一種 對引數的“快取”,是一種非常高效的編寫函式的方法