如何在 JavaScript 中同时使用函数和闭包来获得相同的结果

how to get the same result by using function and closure together in javascript

本文关键字:闭包 结果 JavaScript 函数      更新时间:2023-09-26

我需要进行以下(下面)函数调用以在两种情况下给出相同的结果:

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;
   }
 }

有什么建议吗?

尝试根据你的要求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

"酷"的一行回答:

function sum(x, y){ 
   return y != undefined? x+y : function(a){return x + a}; 
}

你应该使用逻辑OR (||),而不是AND (&&)

function sum(x,y){
   if (y == undefined || y == ''){
      return function (y){
        return x + y;
      }
   }
   else {
     return x + y;
   }
}

注意:您可能不需要该功能,它只是多余的。

你可以像这样使用条件反射:

function sum( x , y ){
  if(y == undefined){
    return function( y ){
      return x + y;
    };
  }
  else{
    return x + y;
  }
}