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