Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Javascript JS递归函数_Javascript - Fatal编程技术网

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)
。不要那样做。