SyntaxError: rest parameter may not have a default

剩餘引數具有預設值時,會發生 JavaScript 異常“rest parameter may not have a default”(剩餘引數不能有預設值)。因為剩餘引數總是建立一個數組,所以預設值永遠不會應用。

訊息

SyntaxError: Rest parameter may not have a default initializer (V8-based)
SyntaxError: rest parameter may not have a default (Firefox)
SyntaxError: Unexpected token '='. Expected a ')' or a ',' after a parameter declaration. (Safari)

錯誤型別

SyntaxError

哪裡出錯了?

預設引數在沒有傳遞引數或引數作為 undefined 傳遞時,會給引數一個預設值。剩餘引數收集傳遞給函式的所有剩餘引數並始終建立一個數組。因此,給剩餘引數設定預設值是沒有意義的。

示例

無效案例

js
function doSomething(...args = []) {}

有效情況

js
function doSomething(...args) {
  // args is always an array
}

另見