柯里化
一、概念
二、实现
形参定长:
function curry(fn){
let allArgs = [];
return function next(...args){
allArgs = allArgs.concat(...args)
if(fn.length === allArgs.length){
const result = fn(...allArgs);
allArgs = []; // 结果计算完后要清空参数容器,避免柯里化后的函数再次调用后受影响
return result
}else{
return next
}
}
}
function add(a, b, c){
return a+ b+c
}
console.log(add(1,2,3))
let curryingAdd = curry(add);
console.log(curryingAdd(1,2,3));
console.log(curryingAdd(1)(2,3));
console.log(curryingAdd(1)(2)(3));形参不定长:
三、应用
1、参数复用
2、兼容逻辑提前确认
3、延迟执行
Last updated