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

另見