ECMAScript 2017 的特性“函数参数列表和调用中的尾随逗号”是由 Jeff Morrison 提出的。
参数定义中的尾随逗号现在是合法的
function
foo
(
param1
,
param2
,
)
{}
类似地,函数调用中的尾随逗号现在也是合法的
foo
(
'abc'
,
'def'
,
);
对象字面量中的尾随逗号被忽略
let
obj
=
{
first
:
'Jane'
,
last
:
'Doe'
,
};
数组字面量中的尾随逗号也被忽略
let
arr
=
[
'red'
,
'green'
,
'blue'
,
];
console
.
log
(
arr
.
length
);
// 3
为什么这很有用?有两个好处。
首先,重新排列项目更简单,因为如果最后一项改变了位置,您不必添加和删除逗号。
其次,它有助于版本控制系统跟踪实际更改的内容。例如,从
[
'foo'
]
到
[
'foo'
,
'bar'
]
会导致包含 'foo'
的行和包含 'bar'
的行都被标记为已更改,即使唯一的实际更改是添加了后者。
鉴于可选和忽略的尾随逗号的好处,该特性将它们带到了参数定义和函数调用中。
例如,以下函数声明在 ECMAScript 6 中会导致语法错误,但现在是合法的
function
foo
(
param1
,
param2
,
)
{}
类似地,这种对 foo()
的调用现在在语法上是合法的
foo
(
'abc'
,
'def'
,
);