将add(5)(6)的输出获取为1的Javascript解决方案
最近,我正在进行javascript的谜题,其中一个问题是 为以下两种情况编写一个函数,将其添加到输出11中将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)) 我会这样做
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;}
,vara
等于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;}
,vara
等于1
。现在,在您的示例中,我们在函数(b){return 1+b;}
中,该函数用单个参数2
调用:它将返回3。然后调用3,就好像它是一个带有原始add(1)(2)(3)
参数3
的函数一样。这将触发js错误。