柯里化
- 定义一个闭包变量,用来存储每次调用的参数
- 包裹目标函数之后返回一个新函数
- 调用新函数,每次传入的参数收集到闭包变量
- 如果闭包变量的长度到达指定长度,则调用目标函数并传入收集的参数,否则返回这个新函数
function currying(fn) {
let args = []
return function f(){
args.push(...arguments)
if(args.length >= 3){
// deepcopy args
const params = JSON.parse(JSON.stringify(args))
args = []
return fn.apply(null, params)
}else{
return f
}
}
}
小于 1 分钟