语法错误:剩余参数可能没有默认值

剩余参数默认值 时,会发生 JavaScript 异常 "剩余参数可能没有默认值"。因为 rest 参数总是创建一个数组,所以默认值永远不会适用。

¥The JavaScript exception "rest parameter may not have a default" occurs when a rest parameter has a default value. Because the rest parameter always creates an array, the default value would never apply.

信息

¥Message

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)

错误类型

¥Error type

SyntaxError

什么地方出了错?

¥What went wrong?

如果参数未传递或作为 undefined 传递,A 默认参数 会为参数提供默认值。A 剩余参数 收集传递给函数的所有剩余参数并始终创建一个数组。因此,为 rest 参数设置默认值是没有意义的。

¥A default parameter gives a parameter a default value if the argument is not passed or passed as undefined. A rest parameter collects all the remaining arguments passed to the function and always creates an array. Therefore, it doesn't make sense to have a default value for a rest parameter.

示例

¥Examples

无效案例

¥Invalid cases

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

有效案例

¥Valid cases

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

也可以看看