额外的,允许进行解构分配

bat*_*man 0 javascript

在es6中,以下似乎是有效的代码:

function test(a1,{a=1,b=2} = {},) {}
Run Code Online (Sandbox Code Playgroud)

注意,功能args中的额外功能.我不确定这是否是一个错误,因为这个额外,只被接受用于解构分配.

T.J*_*der 6

从ES2017开始,无论是否解构,参数列表上的尾随逗号都是有效的.(请参阅FormalParameters的规范,它特别FormalParameterList[?Yield, ?Await] ,列为有效选项之一.)例如,在任何最近(ish)版本的Chrome中,这适用于符合ES2017的JavaScript引擎,如V8:

function foo(a, b,) {
  // ------------^
  console.log(a, b);
}
foo(1, 2);
Run Code Online (Sandbox Code Playgroud)

如果您在没有进行解构时看到该逗号上的错误,但是当您没有进行解构时,那就是您正在使用的JavaScript引擎尚未完全符合当前规范(尚未).


同样,ES2017 +中也允许参数列表中的尾随逗号:

function foo(a, b) {
  console.log(a, b,);
  // -------------^
}
foo(1, 2);
Run Code Online (Sandbox Code Playgroud)