Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.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 为什么函数长度排除rest参数_Javascript - Fatal编程技术网

Javascript 为什么函数长度排除rest参数

Javascript 为什么函数长度排除rest参数,javascript,Javascript,探索并找到如下所示的函数: var addFourNumbers = (a, b, c, d) => a + b + c + d; var curriedAddFourNumbers = R.curry(addFourNumbers); var f = curriedAddFourNumbers(1, 2); var g = f(3); g(4); //=> 10 有很多函数式编程语言提供了现成的功能,但是在JS中它看起来很神奇,你怎么知道什么是函数算术呢 答案很简单,根据: l

探索并找到如下所示的函数:

var addFourNumbers = (a, b, c, d) => a + b + c + d;

var curriedAddFourNumbers = R.curry(addFourNumbers);
var f = curriedAddFourNumbers(1, 2);
var g = f(3);
g(4); //=> 10
有很多函数式编程语言提供了现成的功能,但是在JS中它看起来很神奇,你怎么知道什么是函数算术呢

答案很简单,根据:

length属性指示 功能

但是rest参数没有什么特别之处,
length
排除了rest参数,它看起来很奇怪,例如,让我们考虑一下:

function a(...d) { console.log(d) } // expected output: []
函数
a
肯定知道它需要一个参数
d
,而这个参数是数组,那么有没有合理的句子说明为什么JS排除rest参数或这个行为是特性之一?

(重点是我的)

length属性表示函数预期的参数数

如果rest参数指示可变数量的参数,则
length
属性在概念上与rest参数不兼容。我认为他们选择从
长度
计数中省略rest参数是一个明智的决定。

(我的重点)

length属性表示函数预期的参数数


如果rest参数指示可变数量的参数,则
length
属性在概念上与rest参数不兼容。我认为他们选择从
长度
计数中省略rest参数是一个明智的决定。

您误解了
的作用。它特别需要可变数量的参数。要获得预期的输出,必须调用
a()
(无参数!),因此肯定不能说
a
需要一个参数?!我不认为这个问题不清楚。OP想知道为什么rest参数不包括在
.length
属性中,即使在函数本身中,它们也显示为单个参数(因此可以认为
函数foo(…args){}
的长度应为1)。“length属性表示函数预期的参数数”。如果rest参数指示可变数量的参数,则
length
属性与rest参数(概念上)完全不兼容。我认为他们选择从
长度
计数中省略rest参数是一个明智的决定。@aaaaaa我完全同意,我认为你应该将此作为一个答案。你误解了
的作用。它特别需要可变数量的参数。要获得预期的输出,必须调用
a()
(无参数!),因此肯定不能说
a
需要一个参数?!我不认为这个问题不清楚。OP想知道为什么rest参数不包括在
.length
属性中,即使在函数本身中,它们也显示为单个参数(因此可以认为
函数foo(…args){}
的长度应为1)。“length属性表示函数预期的参数数”。如果rest参数指示可变数量的参数,则
length
属性与rest参数(概念上)完全不兼容。我认为他们选择从
length
计数中省略rest参数是一个明智的决定。@aaaaaa我完全同意,我认为您应该将此作为一个答案发布。下面是计算
函数.length
属性的方法。我要注意的是,不仅长度中省略了rest参数,而且还忽略了带有默认参数的任何参数。我要注意的是,长度中不仅省略了rest参数,而且还省略了带有默认参数的任何参数。
function a(...d) { console.log(d) } // expected output: []