Das Feature „Trailing commas in function parameter lists and calls“ für ECMAScript 2017 wurde von Jeff Morrison vorgeschlagen.
Nachgestellte Kommas in Parameterdefinitionen sind nun legal
function foo(
param1,
param2,
) {}
Ebenso sind nachgestellte Kommas in Funktionsaufrufen nun ebenfalls legal
foo(
'abc',
'def',
);
Nachgestellte Kommas werden in Objekt-Literalen ignoriert
let obj = {
first: 'Jane',
last: 'Doe',
};
Und sie werden auch in Array-Literalen ignoriert
let arr = [
'red',
'green',
'blue',
];
console.log(arr.length); // 3
Warum ist das nützlich? Es gibt zwei Vorteile.
Erstens ist das Umsortieren von Elementen einfacher, da Sie keine Kommas hinzufügen und entfernen müssen, wenn sich die Position des letzten Elements ändert.
Zweitens hilft es Versionskontrollsystemen dabei, zu verfolgen, was sich tatsächlich geändert hat. Zum Beispiel, wenn man von
[
'foo'
]
zu
[
'foo',
'bar'
]
wechselt, werden sowohl die Zeile mit 'foo' als auch die Zeile mit 'bar' als geändert markiert, obwohl die einzige wirkliche Änderung die Hinzufügung der letzteren Zeile ist.
Angesichts der Vorteile von optionalen und ignorierten nachgestellten Kommas bringt dieses Feature sie in Parameterdefinitionen und Funktionsaufrufe.
Zum Beispiel führt die folgende Funktionsdeklaration in ECMAScript 6 zu einem SyntaxError, ist aber jetzt legal
function foo(
param1,
param2,
) {}
Ebenso ist dieser Aufruf von foo() nun syntaktisch legal
foo(
'abc',
'def',
);