sum(a)(b)的输出= a + b,例如:
sum(1)(2)= 3
sum(5)( - 1)(2)= 6
总和(6)( - 1)( - 2)( - 3)= 0
目的是接受任意数量的输入参数。
我已经看到了这个问题的正确解决方案。 我的问题是为什么我的方法不起作用。
正确的解决方案:
function sum(a){
var sum = a
function f(b){
sum += b
return f
}
f.toString = function(){return sum}
return f
}
我的方法:
function add(a){
function add1(b){
if(b === undefined){
console.log(a);
return;
}
else{
return add(a+b);
}
}
if(a === undefined){
console.log(a);
return;
}
else{
return add1;
}
}
测试数据:添加(4),添加(4)(2)。 在两个测试用例中,分支" a === undefined"或者" b === undefined"永远不会到达。我对此很困惑。
答案 0 :(得分:1)
In both test cases, branch "a === undefined" or "b === undefined" will never be reached
那是因为a和b是函数的参数。要使它们未定义,您必须调用函数而不传递参数值或将未定义作为值传递,例如add()
add(5)()
add(5)(void(0))
如果您在最后添加空()
,则您的功能有效,例如add(7)(8)(9)()
。