# 函数柯里化-延迟计算

实现如下形式

A(1)() = 1;
A(1)(2)() = 3;
A(1)(2)(3)() = 6;

# 实现

const A = (function B() {
  // 缓存每次传入的参数
  let cache = [];
  // 执行后返回的函数
  const fn = (num) => { 
    if(typeof num === 'undefined') {
      // 参数为空,将队列累加后清空
      const ret = cache.reduce((pre, cur) => pre + cur);
      cache = [];
      return ret;
    } else {
      // 放入缓存
      cache.push(num);
      // 返回函数引用
      return fn;
    }
  }
  return fn;
})(); // 使用闭包