柯里化函数
柯里化是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术
功能:创建一个函数,该函数接收一个或多个 func的参数,如果 func 所需要的参数都被提供则执行 func 并返回执行的结果。否则继续返回该函数并等待接收剩余的参数。
参数:需要柯里化的函数
返回值:柯里化后的函数
作用一、参数复用
作用二、提前确认
作用三、 延迟运行
//处理函数
function sum(...args){
return args.reduce((m,n)=>m+n)
}
function curry(fn){
let args = Array.prototype.slice.call(arguments,1)
return function replay() {
if(arguments.length > 0){
let innerArgs = Array.prototype.slice.call(arguments)
args = args.concat(innerArgs)
return replay
}
return fn.apply(null,args) //序列化参数
}
}
let addCurry = curry(sum)
addCurry(1)(2)(4)()//7