Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.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_Ecmascript 6 - Fatal编程技术网

Javascript 参数列表中不允许有多个rest运算符?

Javascript 参数列表中不允许有多个rest运算符?,javascript,ecmascript-6,Javascript,Ecmascript 6,第一个函数可以,但第二个函数不行,所以函数中没有多个rest参数?正确。对任何参数使用Rest运算符(但最后一个参数除外)都会导致出现SyntaxError 这是有道理的 参数上的Rest运算符告诉编译器获取所有剩余参数。如果第一个参数有一个rest运算符,它将获取所有参数,之后任何后续参数都将未定义 因此,Rest参数只能位于参数列表中的最后一个参数上 使用中的示例 function unshift(array, ...int) { return [...int].concat(array

第一个函数可以,但第二个函数不行,所以函数中没有多个rest参数?

正确。对任何参数使用Rest运算符(但最后一个参数除外)都会导致出现
SyntaxError

这是有道理的

参数上的Rest运算符告诉编译器获取所有剩余参数。如果第一个参数有一个rest运算符,它将获取所有参数,之后任何后续参数都将
未定义

因此,Rest参数只能位于参数列表中的最后一个参数上

使用中的示例

function unshift(array, ...int) {
  return [...int].concat(array);
}

function unshift(...array, ...int) {
  return [...int, ...array];
}
如果在某个奇怪的世界中,Rest参数可能位于许多参数中的第一个,那么我们会有类似的结果

function foo(bar, ...baz) {
  console.log(bar);
  console.log(baz); 
}

foo(1, 2, 3, 4);
// 1
// [2, 3, 4]

那有什么用…?

正确。对任何参数使用Rest运算符(但最后一个参数除外)都会导致出现
SyntaxError

这是有道理的

参数上的Rest运算符告诉编译器获取所有剩余参数。如果第一个参数有一个rest运算符,它将获取所有参数,之后任何后续参数都将
未定义

因此,Rest参数只能位于参数列表中的最后一个参数上

使用中的示例

function unshift(array, ...int) {
  return [...int].concat(array);
}

function unshift(...array, ...int) {
  return [...int, ...array];
}
如果在某个奇怪的世界中,Rest参数可能位于许多参数中的第一个,那么我们会有类似的结果

function foo(bar, ...baz) {
  console.log(bar);
  console.log(baz); 
}

foo(1, 2, 3, 4);
// 1
// [2, 3, 4]

那有什么用呢?

Rest参数必须是最后一个形式参数 错误:

对:

function f(a, ...b, c) {
 // ...
}

Rest参数必须是最后一个形式参数 错误:

对:

function f(a, ...b, c) {
 // ...
}

那又有什么意义呢?你希望数组在哪里完成,int从哪里开始?要学究的话,这不是“rest操作符”。这是“rest参数语法”或“rest参数表示法”。这有什么意义呢?你希望数组在哪里完成,int从哪里开始?要学究的话,这不是“rest操作符”。它是“rest参数语法”或“rest参数表示法”。您的第二个示例有一个合理的解释,即
bar
将是
[1,2,3]
baz
将是
4
。为什么不能得到支持?@torazaburo:这是一个公平的观点。我的怀疑是,正如现在定义的那样,rest操作符总是意味着一件事,那就是“拿走剩下的一切(拿走“rest”)。我怀疑如果规则可以这样弯曲,规范(和用法)会变得相当复杂……但这只是我的猜测……您的第二个示例有一个合理的解释,即
bar
将是
[1,2,3]
,而
baz
将是
4
。为什么不能得到支持?@torazaburo:这是一个公平的观点。我的怀疑是,正如现在定义的那样,rest操作符总是意味着一件事,那就是“拿走剩下的一切(拿走“rest”)。我怀疑如果规则可以这样弯曲,规范(和用法)会变得相当复杂…但这只是我的猜测。。。