在JavaScript中实现Sum函数

时间:2019-03-18 00:29:06

标签: javascript

我试图解决一个难题,该难题需要'n'个参数然后计算总和。

find $1 -type f -name '*.jpeg' -o -name '*.jpg' -o -name '*.gif' -o -name '*.GIF' -o -name '*.PNG' |  xargs -n 1 -I {}  convert {} -set filename:base '%i' '%[basename]' '%[filename:base].png'

问题:使用上面示例中的相同逻辑,我正在尝试这样做:

  

如果我想做类似的事情

     

sum(1)(2)(3)=>应该为6

     

如果我做sum(1)=>应该输出1

     

sum(1)(2)=>应该输出3等等   

这是我尝试过的:

function add(arg1) {
    let total=arg1;
    const func = function(...args){
        if(!args[0]) return total;
        total += args[0];
        return func;
    }

    return func;
}

console.log(add(1)(2)(3)()); // => Should output 6

1 个答案:

答案 0 :(得分:1)

说明:

Proxy:Proxy对象用于定义基本操作的自定义行为。在javascript中,您几乎可以为每个操作创建陷阱

  • 使用处理程序的Getter函数返回Sum
  • 使用处理程序的Apply函数来迭代和执行加法。

function sum2(n) {
  sum = n;
  const adhoc = new Proxy(function a () {}, {
    get (obj, key) {
      return () => sum;
    },
    apply (receiver, ...args) {
      sum += args[1][0];
      return adhoc;
    },
  });
  return adhoc
}
console.log(sum2(1));
console.log(sum2(1)(2));
console.log(sum2(1)(2)(3));