Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将add(5)(6)的输出获取为1的Javascript解决方案_Javascript - Fatal编程技术网

将add(5)(6)的输出获取为1的Javascript解决方案

将add(5)(6)的输出获取为1的Javascript解决方案,javascript,Javascript,最近,我正在进行javascript的谜题,其中一个问题是 为以下两种情况编写一个函数,将其添加到输出11中 添加(5,6)-输出为11 添加(5)(6)-输出再次为11 我尝试将函数包装起来,但没有成功 你能帮我理解怎么做吗 谢谢 我尝试了下面的代码,但得到了NaN作为输出 function add(a){ function addto(b){ return a + b; } return addto(); } console.log(add(5)(6)) 我会这样做

最近,我正在进行javascript的谜题,其中一个问题是 为以下两种情况编写一个函数,将其添加到输出11中

  • 添加(5,6)-输出为11
  • 添加(5)(6)-输出再次为11
  • 我尝试将函数包装起来,但没有成功

    你能帮我理解怎么做吗

    谢谢

    我尝试了下面的代码,但得到了NaN作为输出

    function add(a){
      function addto(b){
        return a + b;
      }
      return addto();
    }
    
    console.log(add(5)(6))
    

    我会这样做

    var add = function(a, b) {
        if (arguments.length == 1) {
            return function(b) {
                return a+b;
            }
        }
        else {
            return a+b;
        }
    }
    


    另一种解决方案是检查b是否未定义。

    我会这样做

    var add = function(a, b) {
        if (arguments.length == 1) {
            return function(b) {
                return a+b;
            }
        }
        else {
            return a+b;
        }
    }
    
    function add(a,b){ return b !== undefined ? a + b : function(b){ return a + b; } }
    

    另一种解决方案可能是检查b是否未定义。

    试试这个:

    function add(a,b){ return b !== undefined ? a + b : function(b){ return a + b; } }
    
    function add(a, b) {
      if (b !== undefined) {
        return a + b;
      }
      return function(c) {
        return a + c;
      }
    }
    
    试试这个:

    function add(a, b) {
      if (b !== undefined) {
        return a + b;
      }
      return function(c) {
        return a + c;
      }
    }
    

    我可以正确地执行它两次

    function sum(x) {
      if (arguments.length == 2) {
        return arguments[0] + arguments[1];
      } else {
        return function(y) { return x + y; };
      }
    }
    

    我可以正确地执行它两次

    function sum(x) {
      if (arguments.length == 2) {
        return arguments[0] + arguments[1];
      } else {
        return function(y) { return x + y; };
      }
    }
    


    在add-function中返回一个函数。您应该向我们展示您迄今为止的尝试,以便我们了解您的困境。另外,这个问题让我想起了。在这两种情况下,它应该是相同的函数吗?@some,是的,它应该是相同的函数在add-function中返回一个函数。您应该向我们展示您迄今为止所做的尝试,以便我们了解您的困境。另外,这个问题让我想起了。在这两种情况下它应该是相同的函数吗?@有些,是的,它应该是相同的函数这可能适用于
    a=5
    b=6
    ,但是如果
    b
    的值是
    0
    ,该怎么办<代码>0在Javascript中被评估为
    false
    。请注意:)这可能适用于
    a=5
    b=6
    ,但如果
    b
    的值为
    0
    ,该怎么办
    0
    在Javascript中被评估为
    false
    。很酷的一行代码顺便说一下:)@John谢谢它能工作,请您解释一下。内部函数是否自动获取参数b?抱歉,由于声誉不好,无法升级投票,但在我有足够的重复次数时会升级。@user3833838内部函数中的
    b
    参数不是指传递给
    add
    函数的
    b
    ,而是指传递给内部函数本身的
    b
    。@Arnellbalane,谢谢。因此,如果理解正确,如果我喜欢add(1)(2)(3)并且我在另一个函数中返回函数,arg1将传递给主add,arg2传递给第二个函数,arg3传递给第二个函数中的第三个;我说的对吗?请注意,问题要求编写一个函数
    add
    ,而您正在编写一个匿名函数,并将其分配给一个名为
    add
    的变量。否则这是完全有效的:)@user3833838:如果您添加了(1)(2)(3),那么函数中的
    参数。长度
    计算为
    1
    :函数将返回
    function(b){return a+b;}
    ,var
    a
    等于
    1
    。现在,在您的示例中,我们在
    函数(b){return 1+b;}
    中,该函数用单个参数
    2
    调用:它将返回3。然后调用3,就好像它是一个带有原始
    add(1)(2)(3)
    参数
    3
    的函数一样。这将触发js错误。@John谢谢,它可以工作,请您解释一下。内部函数是否自动获取参数b?抱歉,由于声誉不好,无法升级投票,但在我有足够的重复次数时会升级。@user3833838内部函数中的
    b
    参数不是指传递给
    add
    函数的
    b
    ,而是指传递给内部函数本身的
    b
    。@Arnellbalane,谢谢。因此,如果理解正确,如果我喜欢add(1)(2)(3)并且我在另一个函数中返回函数,arg1将传递给主add,arg2传递给第二个函数,arg3传递给第二个函数中的第三个;我说的对吗?请注意,问题要求编写一个函数
    add
    ,而您正在编写一个匿名函数,并将其分配给一个名为
    add
    的变量。否则这是完全有效的:)@user3833838:如果您添加了(1)(2)(3),那么函数中的
    参数。长度
    计算为
    1
    :函数将返回
    function(b){return a+b;}
    ,var
    a
    等于
    1
    。现在,在您的示例中,我们在
    函数(b){return 1+b;}
    中,该函数用单个参数
    2
    调用:它将返回3。然后调用3,就好像它是一个带有原始
    add(1)(2)(3)
    参数
    3
    的函数一样。这将触发js错误。