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
}

另见