Javascript JS递归函数
我定义了一个函数Javascript JS递归函数,javascript,Javascript,我定义了一个函数let sum=a=>b=>b?(a+b):a 如果我这样做 console.log(sum(1)(2)()我得到输出3 但是如果我尝试 console.log(sum(1)(2)(3)()我得到一个错误 为什么会这样?当你这样做的时候 console.log(sum(1)(2)(3)); 它将抛出一个错误,因为您正试图调用第三个函数;您从未创建过它(sum(1)(2)返回3,这不是函数) 你的函数是一个二阶的高阶函数。返回另一个函数的函数。所以函数调用应该只调用两次;您不能像
let sum=a=>b=>b?(a+b):a代码>
如果我这样做
console.log(sum(1)(2)()代码>我得到输出3
但是如果我尝试
console.log(sum(1)(2)(3)()代码>我得到一个错误
为什么会这样?当你这样做的时候
console.log(sum(1)(2)(3));
它将抛出一个错误,因为您正试图调用第三个函数;您从未创建过它(sum(1)(2)
返回3,这不是函数)
你的函数是一个二阶的高阶函数。返回另一个函数的函数。所以函数调用应该只调用两次;您不能像上面那样调用第三个函数。公布发生的错误,因为sum
返回的函数不是函数而是数字<代码>b?(a+b):a
返回a+b
或a
。在您的示例中,这两个都不是函数。Brause sum是函数,sum()是函数,但sum()不是函数,因为sum(1)(2)
返回3
,调用sum(1)(2)(3)
类似于3(3)
。不要那样做。