js多次调用同一个函数,怎么返回函数的和之积,怎么实现多次调用函数,还能同时使用所有调用的函数

用js实现函数f1,f返回每次调用拿书列表和之积,集中函数f可以不限次数调用,每次调用的参数个数不定。f(1,2)(3)(4,5,6) = (1+2)*3*(4+5+6) 返回和之积

javascript


 // 约定不传参数时 获取乘积结果
    const f1 = (...args) => {
        if (args.length === 0) {
          if (!f1.ands) {
            return 0;
          }
          return f1.ands.reduce((p, c) => p * c, 1);
        }

        !f1.ands && (f1.ands = []);

        f1.ands.push(args.reduce((p, c) => p + c, 0));

        return f1;
      }

      console.log(f1(1,2)(2)(3,4)());
 <script type="text/javascript">
    function foo(args) {
        if (arguments.length > 0) {
            var sum = 1;
            for (var i = 0; i < arguments.length; i++) {
                var sum1 = 0;
                for (var j = 0; j < arguments[i].length; j++) {
                    sum1 = sum1 + arguments[i][j];
                }
                sum = sum * sum1;
            }
            return sum;
        }
        else {
            return 1;
        }
    }
    var r = foo([1, 2],[3],[4, 5, 6]);
    alert(r);
</script>
function f() {
    var s = 0;
    for (var i = 0; i < arguments.length; i++) {
        s += arguments[i];
    }
    if (this.upData) {
        s *= this.upData;
    }
    var nf = f.bind({upData:s});
    nf.valueOf = nf.toString = function () {
        return s;
    }
    return nf;
}
alert( f(1,2)(3)(4,5,6) );

 function f(...arg0) {
  var result = (...arg1) => f(arg0.reduce((x,s)=>x+s)*arg1.reduce((x,s)=>x+s));
  result.valueOf = () => arg0.reduce((x,s)=>x+s);
  return result
}

console.log(f(1,2)(3)(4,5,6)+0)