使用内部函数添加数字-JavaScript

使用内部函数添加数字-JavaScript,javascript,closures,Javascript,Closures,我正在尝试创建一个函数sum,它使用一个内部函数将多个数字相加。例如 sum12将打印3 sum123将打印6 sum1234将打印10,以此类推 我编写了以下适用于sum12的代码 function sum(num){ function add (b){ console.log(num+=b); } return add; } 如何扩展它以处理对内部函数的多个调用?我将这样处理它。 只有一个函数可以接受2个数字。将这两个数字相加并返回总和 functi

我正在尝试创建一个函数sum,它使用一个内部函数将多个数字相加。例如 sum12将打印3 sum123将打印6 sum1234将打印10,以此类推

我编写了以下适用于sum12的代码

function sum(num){
    function add (b){
        console.log(num+=b);
    }
    return add;
}

如何扩展它以处理对内部函数的多个调用?

我将这样处理它。 只有一个函数可以接受2个数字。将这两个数字相加并返回总和

function sum(num1, num2){
    return num1+num2;
}

console.log(sum(11, 10));
更新:我想这就是你想要的。一个函数,它接受一个数字数组,然后将它们全部相加

function sumAll(numbers){
    var result = 0;
    numbers.forEach(function(value, key){
        result += value;
    });
    return result;
}

console.log(sumAll([1,2,3]));

我认为你所看到的是对变量数的求和。那么这个呢:

function sum() {
  var total = 0;
  for (var i = 0; i < arguments.length; i++) {
    total += arguments[i];
  }

  alert(total);
}

sum(1,2,3,4,5,6);
印刷品:21


您可以使用任意数量的参数调用sum。

curry和dynamic arity不兼容。这里有一些问题。你需要在某个地方通过b。理想情况下,此函数将接受2个参数,并将它们相加。sum需要将当前值作为属性或保存在闭包中返回自身。诀窍是在下次调用时清除它;作为内部add函数的最后一行。我试着将此作为答案发布,但它已关闭。请注意,这会打印答案,但不会返回。感谢Bergi为我指出正确的解决方案。未定义foo。你还加了I。I与传入的数字无关。如果你改变数字,结果还是15个。你想要总数+=参数,谢谢你指出这一点。我已经更新了。