在这种情况下,为什么对象属性前不必要的逗号不会导致语法错误?

Why does an unnecessary comma before an object property not cause a syntax error in this case?

提问人:Jakob Basshunter Widmann 提问时间:4/16/2023 更新时间:4/16/2023 访问量:40

问:

为什么下面的代码示例不会抛出类似 ?SyntaxError: Unexpected token ','

如果我定义以下内容,我会得到上面提到的语法错误。

const a = {
,
a: 1
}

但另一方面,如果我定义以下内容,则不会抛出错误,尽管由于条件为 false,未定义属性 b。

const a = {
...(false && {b: 1}),
a: 1
}

上面的逗号会发生什么情况,或者为什么没有抛出错误?a: 1

JavaScript 语法错误

评论

2赞 Pointy 4/16/2023
点差和表达式的存在是关键区别。它们存在于对象初始值设定项中,而在第一个示例中,逗号之前没有任何内容。
0赞 Bergi 4/16/2023
您可以将其简化为 .这与 不同。const a = {...false, a: 1}const a = {, a: 1}
2赞 Barmar 4/16/2023
你认为传播语法是通过文本替换来工作的,但事实并非如此。
1赞 Mister Jojo 4/16/2023
计算机语言使用非常严格的句法规则;“人类”语言特有的多重歧义没有立足之地

答: 暂无答案