JS 链式调用与累加功能

370 阅读1分钟

JS 链式调用与累加功能

1. 实现 add 函数使得满足以下条件

需满足的条件:

  • add(1).sum() //=> 1
  • add(1)(2).sum() //=> 2
  • add(1)(2)(3).sum() //=> 6
  • add(1)(2)(3)(4).sum() //=> 10
function add(a) {
  let total = a
  const fn = function(b) {
    total += b
    return fn
  }
  fn.sum = function() {
    return total
  }

  return fn
}
add(1).sum() // => 1
add(1)(2).sum() //=> 3
add(1)(2)(3).sum() //=> 6
add(1)(2)(3)(4).sum() //=> 10

2. 实现 add 函数使得满足以下条件

需满足的条件:

  • add(1) // => 1;
  • add(1)(2) //=> 3;
  • add(1)(2)(3) //=> 6;
  • add(1)(2)(3)(4) //=> 10;
function add(num1) {
  const sum = function(num2) {
    num1 += num2
    return sum
  }
  sum.toString = function() {
    return num1
  }

  return sum
}

add(1) // output: 1
add(1)(2) // output: 3
add(1)(2)(3) // output: 4

需满足的条件:

  • add(1); // 1
  • add(1)(2); // 3
  • add(1)(2)(3); // 6
  • add(1)(2, 3); // 6
  • add(1, 2)(3); // 6
  • add(1, 2, 3); // 6
function add(...args1) {
  let total = args1.reduce((a, b) => a + b, 0)
  const sum = function(...args2) {
    total = args2.reduce((a, b) => a + b, total)
    return sum
  }

  sum.toString = function() {
    return total
  }

  return sum
}
add(1) // output: 1
add(1)(2) // output: 3
add(1)(2)(3) // output: 6
add(1)(2, 3) // output: 6
add(1, 2)(3) // output: 6
add(1, 2, 3) // output: 6