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',
);