如何在javascript中同时使用函数和闭包来获得相同的结果
我需要进行以下(以下)函数调用,以在两种情况下给出相同的结果:如何在javascript中同时使用函数和闭包来获得相同的结果,javascript,Javascript,我需要进行以下(以下)函数调用,以在两种情况下给出相同的结果: 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; }
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;
}
}
有什么建议吗?试着按照你的要求来使用你的功能
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
小心:您可能不需要该功能,它只是多余的。 你可以这样使用调节:
function sum( x , y ){
if(y == undefined){
return function( y ){
return x + y;
};
}
else{
return x + y;
}
}
您应该使用逻辑
或
(| |),而不是和
(&&)
“酷”一行回答:
function sum(x, y){
return y != undefined? x+y : function(a){return x + a};
}
这不可能是真的我不明白你的问题。。你的意思是总和(5)+总和(4)也应该是9。。im混淆使用if(y的类型==“未定义”)instead@DTH我必须编写一个可以任意调用的函数,但是,这两种方法的结果应该是相同的
您可能不需要该功能
,所以您是说函数curry是javascript不必要的功能?不,创建一个可以用这两种语法调用的函数是多余的<代码>函数(5)(4)在某些扩展中更具可读性和灵活性,但拥有两个语法有什么好处呢?这将有助于根据开发人员的上下文定制现有函数。参考这个例子,我刚才说这不是问题所在?同时使用func(x,y)和func(x)(y)的条件反射是多余的,应该建议OP不要使用它。@Roberto实际上它是在接受的答案之后发布的,相差三分钟。英雄所见略同,但最好是正确的是的,稍微多一点,但在这种情况下仍然很简单。这很有趣。我同意你的评论,这种函数性对于处理一个总数是非常无用的。。。
function sum(x, y){
return y != undefined? x+y : function(a){return x + a};
}