目录
请支持本书:购买 (PDF, EPUB, MOBI)捐赠
(广告,请不要屏蔽。)

10. 函数参数列表和调用中的尾随逗号

ECMAScript 2017 的特性“函数参数列表和调用中的尾随逗号”是由 Jeff Morrison 提出的。

10.1 概述

参数定义中的尾随逗号现在是合法的

function foo(
    param1,
    param2,
) {}

类似地,函数调用中的尾随逗号现在也是合法的

foo(
    'abc',
    'def',
);

10.2 对象字面量和数组字面量中的尾随逗号

对象字面量中的尾随逗号被忽略

let obj = {
    first: 'Jane',
    last: 'Doe',
};

数组字面量中的尾随逗号也被忽略

let arr = [
    'red',
    'green',
    'blue',
];
console.log(arr.length); // 3

为什么这很有用?有两个好处。

首先,重新排列项目更简单,因为如果最后一项改变了位置,您不必添加和删除逗号。

其次,它有助于版本控制系统跟踪实际更改的内容。例如,从

[
    'foo'
]

[
    'foo',
    'bar'
]

会导致包含 'foo' 的行和包含 'bar' 的行都被标记为已更改,即使唯一的实际更改是添加了后者。

10.3 特性:允许在参数定义和函数调用中使用尾随逗号

鉴于可选和忽略的尾随逗号的好处,该特性将它们带到了参数定义和函数调用中。

例如,以下函数声明在 ECMAScript 6 中会导致语法错误,但现在是合法的

function foo(
    param1,
    param2,
) {}

类似地,这种对 foo() 的调用现在在语法上是合法的

foo(
    'abc',
    'def',
);