我需要进行以下(下面)函数调用,以在两种情况下给出相同的结果:
sum(5,4); // 9
sum(5)(4); // this should also print 9
我尝试了以下但是它不起作用:
function sum(x,y){
var a = x;
var b = y;
if (y == undefined && y == ''){
return function (a,b){
return a +b;
}
}
else {
return a +b;
}
}
有什么建议吗?
答案 0 :(得分:4)
根据您的要求尝试curry
您的功能,
function sum(x,y){
if(y === undefined){
return function(y){ return x+y; }
} else {
return x + y;
}
}
sum(5,4); // 9
sum(5)(4); // 9
答案 1 :(得分:3)
你应该使用逻辑OR
(||),而不是AND
(&&)
function sum(x,y){
if (y == undefined || y == ''){
return function (y){
return x + y;
}
}
else {
return x + y;
}
}
答案 2 :(得分:3)
"酷"一行答案:
function sum(x, y){
return y != undefined? x+y : function(a){return x + a};
}
答案 3 :(得分:2)
小心:您可能不会需要该功能,这只是多余的。
你可以像这样使用条件:
function sum( x , y ){
if(y == undefined){
return function( y ){
return x + y;
};
}
else{
return x + y;
}
}