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

时间:2017-12-30 12:20:51

标签: javascript

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

function test(a1,{a=1,b=2} = {},) {}

注意函数args中的额外,。我不确定这是否是一个错误,因为这个额外的,仅被接受用于解构分配。

1 个答案:

答案 0 :(得分:6)

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

function foo(a, b,) {
  // ------------^
  console.log(a, b);
}
foo(1, 2);

如果您在未进行解构时看到该逗号有错误,但是当您没有进行解构时,则表明您正在使用的JavaScript引擎尚未完全达到当前规范(<)。 / p>

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

function foo(a, b) {
  console.log(a, b,);
  // -------------^
}
foo(1, 2);