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: []