# 函数柯里化-延迟计算
实现如下形式
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;
})(); // 使用闭包