函数柯里化
柯里化就是将多参函数变成单参函数
// 实现函数柯里化
function currying() {
}
// 测试柯里化函数
const sum = (a, b, c, d) => a + b + c + d;
console.log(currying(sum)(1)(2)(3)(4)); // 10
console.log(currying(sum, 1)(2, 3)(4)); // 10
console.log(currying(sum, 1, 2)(3)(4)); // 10
console.log(currying(sum, 1, 2)(3, 4)); // 10
如上代码,实现柯里化函数
实现方式如下,自行理解代码
// 实现函数柯里化
function currying(fn, ...bindArgs) {
return (...args) => {
const allArgs = [...bindArgs, ...args];
if (allArgs.length < fn.length) {
return currying(fn, ...allArgs);
} else {
return fn(...allArgs)
}
}
}
// 测试柯里化函数
const sum = (a, b, c, d) => a + b + c + d;
console.log(currying(sum)(1)(2)(3)(4)); // 10
console.log(currying(sum, 1)(2, 3)(4)); // 10
console.log(currying(sum, 1, 2)(3)(4)); // 10
console.log(currying(sum, 1, 2)(3, 4)); // 10