function unshift(array, ...int) {
return [...int].concat(array);
}
function unshift(...array, ...int) {
return [...int, ...array];
}
第一个函数很好但不是第二个函数,所以在函数中没有多重休息参数这样的事情?参数列表中不允许多余的运算符?
function unshift(array, ...int) {
return [...int].concat(array);
}
function unshift(...array, ...int) {
return [...int, ...array];
}
第一个函数很好但不是第二个函数,所以在函数中没有多重休息参数这样的事情?参数列表中不允许多余的运算符?
正确。除了SyntaxError
中的最后结果之外,还可以在任何参数上使用Rest运算符。
而且很有道理......
的参数,其余运营商告诉编译器获取所有剩余的参数。如果第一个参数有一个休息运算符,它将获取所有参数,之后的任何后续参数将为undefined
。
因此,Rest参数只能在参数列表中的最后一个参数上。
在使用实例
function foo(bar, ...baz) {
console.log(bar);
console.log(baz);
}
foo(1, 2, 3, 4);
// 1
// [2, 3, 4]
如果在一些光怪陆离的世界,其余的参数可以是第一诸多因素的影响,那么我们就会有这样的事情
// NOT VALID JS
function foo(...bar, baz) {
console.log(bar);
console.log(baz);
}
foo(1, 2, 3, 4);
// [1, 2, 3, 4]
// undefined
什么用那会是...?
你的第二个例子有一个合理的解释:'bar'会是'[1,2,3]'而baz'会是'4'。为什么不能被支持? –
@torazaburo:这是一个公平的观点。我的怀疑是,正如现在所定义的那样,其余的操作员总是意味着1件事,即'把剩下的一切都拿走(休息一下)“。如果规则可能以这种方式弯曲,我会怀疑规范(和使用)会变得相当复杂......但这只是我的猜测...... – sfletche
其余参数必须是最后一次正式参数 错误:
function f(a, ...b, c) {
// ...
}
权:
function f(a, b, ...c) {
// ...
}
它将使什么意义?你期望数组完成和int开始? – RaphaMex
要迂腐,这不是“休息操作员”。它是“休息参数语法”或“休息参数表示法”。 –