使用javascript闭包添加两个数字

使用javascript闭包添加两个数字,javascript,closures,Javascript,Closures,我将如何使用闭包来实现这一点 加在一起(2)(3) 我还需要与addTogether(2,3)返回5相同的函数来返回普通加法 您可以编写如下内容: function addTogether(a, b) { if (b === undefined) { return function (b) { return a + b; } } else { return a + b; } } 然而,返回一个函数或数字会让用户感到困惑(充其量)。我建议始终返回函数,但允许在没有参数

我将如何使用闭包来实现这一点

加在一起(2)(3)


我还需要与addTogether(2,3)返回5相同的函数来返回普通加法

您可以编写如下内容:

function addTogether(a, b) {
  if (b === undefined) {
    return function (b) { return a + b; }
  } else {
    return a + b;
  }
}
然而,返回一个函数或数字会让用户感到困惑(充其量)。我建议始终返回函数,但允许在没有参数的情况下调用它(只是稍微好一点):


FWIW:
b==null
句柄
b===undefined | | b==null
否,当其中一个操作数为
null
未定义
时,唯一的时间
=
将返回
true
,如果另一个操作数也是
null
未定义
<代码>0==null;//false这几乎是我唯一一次在real code中使用
==
。虽然我同意,可能不需要检查
null
复选框。@眯着眼,嗯,你说得对。我假设
==
会将0视为足够虚假的,以匹配null,但显然不是。是的,
==
的问题就在于此。其算法过于复杂,无法提供直观的理解。检查
null
undefined
=
太方便了,不能忽略!我不得不问,你为什么要这样做?我对潜在用例可能/将会是什么很感兴趣。
function addTogether(a, b) {
  if (b === undefined) {
    return function (c) { return a + c; }
  } else {
    return function ( ) { return a + b; }
  }
}