SyntaxError: parameter after rest parameter

rest 参数 后面在参数列表中跟随任何其他内容时,就会出现 JavaScript 异常“参数位于 rest 参数之后”,包括另一个 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)

错误类型

哪里出错了?

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) {}

另请参阅