函数柯里化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函数
二、柯里化的优缺点
事实上柯里化是一种“预加载”函数的方法,通过传递较少的参数, 得到一个已经记住了这些参数的新函数,某种意义上讲,这是一种 对参数的“缓存”,是一种非常高效的编写函数的方法