我如何使用闭包来实现这个?
addTogether(2)(3);
我还需要相同的函数来返回正常添加,因为addTogether(2,3)返回5.
答案 0 :(得分:6)
你可以这样写:
function addTogether(a, b) {
if (b === undefined) {
return function (b) { return a + b; }
} else {
return a + b;
}
}
但是,返回某个功能或号码会让您的用户感到困惑(充其量)。我建议总是返回一个函数,但允许在没有参数的情况下调用它(只是稍好一点):
function addTogether(a, b) {
if (b === undefined) {
return function (c) { return a + c; }
} else {
return function ( ) { return a + b; }
}
}