在es6中,以下似乎是有效的代码:
function test(a1,{a=1,b=2} = {},) {}
注意函数args中的额外,
。我不确定这是否是一个错误,因为这个额外的,
仅被接受用于解构分配。
答案 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);