Javascript:如何返回多组输入的函数总和

dav*_*000 1 javascript closures input

我有这个函数,需要能够接受多组输入并返回每个输入的总和。例如:

magicFunction(1)(2)(3) => 6
Run Code Online (Sandbox Code Playgroud)

我用下面的代码完成了这一点。“f(y)”将一直运行,直到没有剩余的输入集。

function magicFunction(x) {
  var sum = x;  

  function f(y) { 
    sum += y;
    return f;
  };  
  return f;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我希望函数返回总和,但该函数最后将返回“[Function: f]”。目前,该函数执行以下操作:

magicFunction(1)(2)(3) => [Function: f]
Run Code Online (Sandbox Code Playgroud)

我不知道如何在最后一次输入后返回总和。有没有办法检查代码是否到达最后一个输入集?因此,我可以运行“return sum”,而不是“return f”。

我考虑添加一个“toString”方法,然后使用“console.log”输出结果。但我正在寻找返回值的函数,而不仅仅是将值输出到控制台。

Nin*_*olz 5

你可以实现一个toString方法或valueOf方法。

function magicFunction(x) {
    var sum = x;  

    function f(y) { 
        sum += y;
        return f;
    }; 
    f.toString = function () { return sum; };      // for expecting string, 1st log
    f.valueOf = function () { return 100 + sum; }; // for expecting numbers, 2nd log

    return f;
}

console.log(magicFunction(2)(3)(4));
console.log(magicFunction(2)(3) + magicFunction(4)(5));
Run Code Online (Sandbox Code Playgroud)