Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
Nachgestellte Kommas
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Nachgestellte Kommas (manchmal auch "Schlusskommas" genannt) können nützlich sein, wenn Sie neue Elemente, Parameter oder Eigenschaften zu JavaScript-Code hinzufügen. Wenn Sie eine neue Eigenschaft hinzufügen möchten, können Sie eine neue Zeile einfügen, ohne die bisher letzte Zeile zu ändern, sofern diese bereits ein nachgestelltes Komma verwendet. Dies macht Versionskontroll-Diffs sauberer, und das Bearbeiten von Code kann weniger problematisch sein.
JavaScript erlaubt seit jeher nachgestellte Kommas in Array-Literalen. Nachgestellte Kommas sind jetzt auch in Objekt-Literalen, Funktionsparametern, benannten Importen, benannten Exporten und mehr erlaubt.
JSON hingegen verbietet alle nachgestellten Kommas.
In diesem Artikel
Beschreibung
JavaScript erlaubt nachgestellte Kommas überall dort, wo eine durch Kommas getrennte Liste von Werten akzeptiert wird und nach dem letzten Element weitere Werte erwartet werden können. Dies schließt ein:
- Array-Literale
- Objekt-Literale
- Parameterdefinitionen
- Funktionsaufrufe
- Benannte Importe
- Benannte Exporte
- Dynamische Importe
- Array- und Objekt-Destrukturierung
In all diesen Fällen ist das nachgestellte Komma völlig optional und ändert die Semantik des Programms in keiner Weise.
Es ist besonders nützlich beim Hinzufügen, Entfernen oder Umordnen von Elementen in einer Liste, die sich über mehrere Zeilen erstreckt, da es die Anzahl der zu ändernden Zeilen reduziert, was sowohl beim Bearbeiten als auch beim Überprüfen des Diffs hilft.
[ "foo",+ "baz", "bar",- "baz", ]Beispiele
>Nachgestellte Kommas in Literalen
Arrays
JavaScript ignoriert nachgestellte Kommas in Array-Literalen:
const arr = [ 1, 2, 3,];arr; // [1, 2, 3]arr.length; // 3Wenn mehr als ein nachgestelltes Komma verwendet wird, entsteht eine Auslassung (oder Lücke). Ein Array mit Lücken wird alssparsame (eindichtes Array hat keine Lücken) bezeichnet. Beim Durchlaufen von Arrays, zum Beispiel mitArray.prototype.forEach() oderArray.prototype.map(), werden Array-Lücken übersprungen. Sparse Arrays sind im Allgemeinen ungünstig, daher sollten Sie mehrere nachgestellte Kommas vermeiden.
const arr = [1, 2, 3, , ,];arr.length; // 5Objekte
Nachgestellte Kommas in Objekt-Literalen sind ebenfalls legal:
const object = { foo: "bar", baz: "qwerty", age: 42,};Nachgestellte Kommas in Funktionen
Nachgestellte Kommas sind auch in Funktionsparameterlisten erlaubt.
Parameterdefinitionen
Die folgenden Funktionsdefinitionen sind legal und gleichwertig zueinander. Nachgestellte Kommas beeinflussen weder dielength-Eigenschaft von Funktionsdeklarationen noch derenarguments-Objekt.
function f(p) {}function f(p,) {}(p) => {};(p,) => {};Das nachgestellte Komma funktioniert auch beiMethodendefinitionen für Klassen oder Objekte:
class C { one(a,) {} two(a, b,) {}}const obj = { one(a,) {}, two(a, b,) {},};Funktionsaufrufe
Die folgenden Funktionsaufrufe sind legal und gleichwertig zueinander.
f(p);f(p,);Math.max(10, 20);Math.max(10, 20,);Ungültige nachgestellte Kommas
Funktionsparameterdefinitionen oder Funktionsaufrufe, die nur ein Komma enthalten, werfen einenSyntaxError. Darüber hinaus sind beim Verwenden vonRest-Parametern nachgestellte Kommas nicht erlaubt:
function f(,) {} // SyntaxError: missing formal parameter(,) => {}; // SyntaxError: expected expression, got ','f(,) // SyntaxError: expected expression, got ','function f(...p,) {} // SyntaxError: parameter after rest parameter(...p,) => {} // SyntaxError: expected closing parenthesis, got ','Nachgestellte Kommas in Destrukturierungen
Ein nachgestelltes Komma ist auch innerhalb einesDestrukturierungs-Musters erlaubt:
// array destructuring with trailing comma[a, b,] = [1, 2];// object destructuring with trailing commaconst o = { p: 42, q: true,};const { p, q, } = o;Jedoch ist ein nachgestelltes Komma nach dem Rest-Element, falls vorhanden, nicht erlaubt:
const [a, ...b,] = [1, 2, 3];// SyntaxError: rest element may not have a trailing commaNachgestellte Kommas in JSON
Da JSON auf einem sehr eingeschränkten Subset der JavaScript-Syntax basiert,sind nachgestellte Kommas in JSON nicht erlaubt.
Beide Zeilen werfen einenSyntaxError:
JSON.parse("[1, 2, 3, 4, ]");JSON.parse('{"foo" : 1, }');// SyntaxError JSON.parse: unexpected character// at line 1 column 14 of the JSON dataLassen Sie die nachgestellten Kommas weg, um das JSON korrekt zu parsen:
JSON.parse("[1, 2, 3, 4 ]");JSON.parse('{"foo" : 1 }');Nachgestellte Kommas in benannten Importen und Exporten
Nachgestellte Kommas sind inbenannten Importen undbenannten Exporten gültig.
Benannte Importe
import { A, B, C,} from "D";import { X, Y, Z, } from "W";import { A as B, C as D, E as F, } from "Z";Benannte Exporte
export { A, B, C,};export { A, B, C, };export { A as B, C as D, E as F, };Nachgestellte Kommas bei dynamischen Importen
Nachgestellte Kommas sind nur indynamischen Importen erlaubt, wenn der Laufzeit auch der zweiteoptions-Parameter implementiert ist.
import("D",);import( "D", { with: { type: "json" } },);Quantifier-Präfix
Hinweis:Das nachgestellte Komma in einemQuantifier ändert tatsächlich seine Semantik von "genaun" zu "mindestensn".
/x{2}/; // Exactly 2 occurrences of "x"; equivalent to /xx//x{2,}/; // At least 2 occurrences of "x"; equivalent to /xx+//x{2,4}/; // 2 to 4 occurrences of "x"; equivalent to /xxx?x?/Spezifikationen
Browser-Kompatibilität
Siehe auch
- Grammatik und Typen Leitfaden