Get to know MDN better
此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。
尾后逗号 (有时叫做“终止逗号”)在向 JavaScript 代码添加元素、参数、属性时十分有用。如果你想要添加新的属性,并且上一行已经使用了尾后逗号,你可以仅仅添加新的一行,而不需要修改上一行。这使得版本控制的代码比较(diff)更加清晰,代码编辑过程中遇到的麻烦更少。
JavaScript 一开始就支持数组字面量中的尾后逗号,随后向对象字面量(ECMAScript 5)中添加了尾后逗号。最近(ECMAScript 2017),又将其添加到函数参数中。
但是,JSON 不允许尾后逗号。
JavaScript 忽略数组中的尾后逗号:
如果使用了多于一个尾后逗号,会产生省略(elision,或者间隙 hole)。带有间隙的数组叫做稀疏数组(sparse 紧凑数组 dense array 没有省略/间隙)。例如,当使用 Array.prototype.forEach() 或 Array.prototype.map() 迭代数组时,会跳过数组间隙。
从 ECMAScript 5 开始,对象字面值中的尾后逗号也是符合语法的:
ECMAScript 2017 支持函数参数中的尾后逗号。
下面的两个函数定义都是合法的,并且互相等价。尾后逗号并不影响函数定义,或者其 arguments 对象的 length 属性。
尾后逗号也可用于类或对象的方法定义。
下面的两个函数调用都是合法的,并且互相等价。
仅仅包含逗号的函数参数定义或者函数调用会抛出 SyntaxError。而且,当使用剩余参数的时候,并不支持尾后逗号:
解构模式中也允许使用尾后逗号:
但是,剩余元素后不允许使用尾后逗号(如果存在)
对象中的尾后逗号仅仅在 ECMAScript 5 中引入。由于 JSON 基于 ES5 之前的语法, JSON 中并不允许尾后逗号。
下面两行都会抛出 SyntaxError:
去掉尾后逗号就行了:
启用 JavaScript 以查看此浏览器兼容性表。