Ich frage mich, warum ein Komma am Ende eines einzelnen Elements in einem JavaScript-Array zulässig ist:
%Vor%am Ende eines einzelnen Elements in einem Objekt zu setzen ist illegal (zumindest meine IDE - WebStorm - meldet einen Fehler):
%Vor%Ist das wirklich illegal in JavaScript?
In der ECMAScript 5 Spezifikation ist es legal:
%Vor%In ECMAScript 3 war es illegal.
%Vor%Ich glaube, es wurde legal gemacht, solche Dinge machbar zu machen.
%Vor%Statt dessen:
%Vor%Speichern Sie einige der Programmierer Zeit.
Zusätzlich zu dem, was ChaosPandion erwähnt hat, gibt es einen wichtigen Unterschied zwischen einem ,
am Ende eines Objekts und einem Array. Leere Kommas in einem Array (technisch elisions genannt) fügen undefined
elements an der entsprechenden Stelle ein; Dies erhöht die Länge des Arrays, aber die Werte sind undefined
.
Bearbeiten: Danke an ChaosPandion und CMS für das Aufzeigen des Fehlers. Ich lese gerade die Spezifikationen und in der Tat ein einzelnes abschließendes Komma nicht erhöht die Länge, aber jedes zusätzliche Nachkommastellen oder irgendwelche Kommas in der Mitte eines Arrays wird die Länge erhöhen.
Zum Beispiel ist [ 1,2,, ]
ein Array der Länge 3 und das gleiche wie [ 1, 2, undefined ]
. In ähnlicher Weise ist [ 1,,,2 ]
ein Array der Länge 4 und das gleiche wie [ 1, undefined, undefined, 2 ]
.
Seltsamerweise verhält sich IE bei diesem "Feature" von JavaScript korrekt mit einem nachgestellten Komma in einem Array (es zählt das extra Element), während Firefox das letzte undefinierte Element ignoriert.
Firefox toleriert das, die meisten anderen vernünftigen Browser tun das auch. Muss ich noch IE Drosseln darauf erwähnen?
Stellen Sie sicher, dass am Ende der Arrays / Objekte keine Kommas stehen. Während Sprachen wie PHP und - je nach Implementierung - JavaScript gut damit sind, ist es extrem hässlich - Sie würden auch keine Zeichenkette am Ende einer Datei offen lassen, nur weil der Parser könnte EOF als gültiges Ende der Zeichenfolge.
Tags und Links javascript