语法错误:剩余参数后的参数

剩余参数 后面跟着参数列表中的任何其他内容(包括另一个剩余参数、形式参数或 尾随逗号)时,会发生 JavaScript 异常 "剩余参数后的参数"。

¥The JavaScript exception "parameter after rest parameter" occurs when a rest parameter is followed by anything else in a parameter list, including another rest parameter, a formal parameter, or a trailing comma.

信息

¥Message

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)

错误类型

¥Error type

SyntaxError

什么地方出了错?

¥What went wrong?

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

¥A rest parameter must be the last parameter in a function definition. This is because the rest parameter collects all the remaining arguments passed to the function, so it doesn't make sense to have any parameters after it. The next non-whitespace character must be the closing parenthesis of the parameter list.

示例

¥Examples

无效案例

¥Invalid cases

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

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

有效案例

¥Valid cases

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

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

也可以看看

¥See also