SyntaxError: parameter after rest parameter

rest 参数 后在参数列表中跟着其他任何内容时,例如另一个 rest 参数、一个形式参数或一个尾随逗号,则会发生 JavaScript 异常“rest 参数后有参数”。

消息

SyntaxError: Rest parameter must be last formal parameter (V8-based)
SyntaxError: parameter after rest parameter (Firefox)
SyntaxError: Unexpected token ','. Rest parameter should be the last parameter in a function declaration. (Safari)

错误类型

SyntaxError

哪里出错了?

rest 参数必须是函数定义中的最后一个参数。这是因为 rest 参数会收集传递给函数的所有剩余参数,因此在其之后再有任何参数都没有意义。下一个非空白字符必须是参数列表的右括号。

示例

无效案例

js
function replacer(match, ...groups, offset, string) {}

function doSomething(
  arg1,
  arg2,
  ...otherArgs, // Accidental trailing comma
) {}

有效情况

js
function replacer(match, ...args) {
  const offset = args.at(-2);
  const string = args.at(-1);
}

function doSomething(arg1, arg2, ...otherArgs) {}

另见