使用javascript闭包添加两个数字

leo*_*ion -1 javascript closures

我如何使用闭包来实现这个???

addTogether(2)(3);

我还需要相同的函数来返回正常添加,因为addTogether(2,3)返回5.

ssu*_*ube 6

你可以这样写:

function addTogether(a, b) {
  if (b === undefined) {
    return function (b) { return a + b; }
  } else {
    return a + b;
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,返回功能或号码会使用户感到困惑(充其量).我建议总是返回一个函数,但允许在没有参数的情况下调用它(只是稍好一些):

function addTogether(a, b) {
  if (b === undefined) {
    return function (c) { return a + c; }
  } else {
    return function ( ) { return a + b; }
  }
}
Run Code Online (Sandbox Code Playgroud)