函数柯里化

柯里化就是将多参函数变成单参函数

// 实现函数柯里化
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
posted @ 2023-11-17 01:26  干徒  阅读(13)  评论(0)    收藏  举报