Javascript 参数列表中不允许有多个rest运算符?
第一个函数可以,但第二个函数不行,所以函数中没有多个rest参数?正确。对任何参数使用Rest运算符(但最后一个参数除外)都会导致出现Javascript 参数列表中不允许有多个rest运算符?,javascript,ecmascript-6,Javascript,Ecmascript 6,第一个函数可以,但第二个函数不行,所以函数中没有多个rest参数?正确。对任何参数使用Rest运算符(但最后一个参数除外)都会导致出现SyntaxError 这是有道理的 参数上的Rest运算符告诉编译器获取所有剩余参数。如果第一个参数有一个rest运算符,它将获取所有参数,之后任何后续参数都将未定义 因此,Rest参数只能位于参数列表中的最后一个参数上 使用中的示例 function unshift(array, ...int) { return [...int].concat(array
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”)。我怀疑如果规则可以这样弯曲,规范(和用法)会变得相当复杂…但这只是我的猜测。。。