Was sind die Unterschiede und / oder Vorteile der Verwendung von Kommas, wenn eine Gruppe von Variablen anstelle von Semikolons deklariert wird?
Beispielsweise:
var foo = 'bar', bar = 'foo';
gegen
var foo = 'bar';
var bar = 'foo';
Ich weiß, dass, wenn Sie das var
Schlüsselwort für die erste Variable im ersten Beispiel angeben, es für alle Variablen bestehen bleibt, sodass beide das gleiche Endergebnis in Bezug auf den Gültigkeitsbereich erzielen. Ist es nur eine persönliche Präferenz oder gibt es einen Leistungsvorteil, wenn man es so oder so macht?
quelle
Nachdem ich Crockford und andere gelesen hatte, begann ich, meine Variablen ausschließlich mit Komma zu verketten. Später ärgerte mich der Chrome DevTools-Debugger, der nicht bei Variablendefinitionen mit Komma stehen blieb. Für den Debugger sind mit Komma verkettete Variablendefinitionen eine einzelne Anweisung, während mehrere var-Anweisungen mehrere Anweisungen sind, bei denen der Debugger anhalten kann. Deshalb habe ich zurückgeschaltet von:
Zu:
Inzwischen finde ich die zweite Variante viel sauberer, ganz zu schweigen von ihrem Vorteil, das Debugger-Problem zu lösen.
Das Argument "weniger Code durch den Draht" ist nicht überzeugend, da es Minifizierer gibt.
quelle
debugger
ein, füge dann eine weitere hinzuvar
und verkette sie weiter mit Kommas. Wenn ich mit dem Debuggen fertig bin, gehe ich zurück und entferne dasdebugger
und das Extravar
.Ich bevorzuge die
var-per-variable
Notation:weil die andere
comma-instead-of-another-var
Notation diese drei Mängel aufweist:1. Schwer zu warten
Betrachten Sie diesen Code:
Aber hey, was macht der Mogrify? Drucken wir b aus, um herauszufinden:
bricht Sachen
2. Schwer zu lesen
Die Variable am Anfang der Zeile gibt deutlich an, dass eine neue Variable initiiert wird.
Was zum Teufel macht das
c = 3
da richtig?3. Nicht konsistent
Bedenken Sie:
Folgen Sie bei
var-per-variable
jeder Deklaration der gleichen Struktur. Mitcomma-instead-of-another-var
der ersten Variablen wird anders deklariert als mit anderen. Wenn Sie beispielsweise die erste Variable innerhalb eines for-Zyklus verschieben möchten, müssen Sie var in die Mitte der Deklarationen einfügenAbgesehen von der Präferenz scheint es, dass die meisten bemerkenswerten Projekte die
var-per-variable
Notation verwendenquelle
Ich stimme den anderen Antwortenden zu, dass dies hauptsächlich eine Frage des persönlichen Stils ist. Um eine "maßgebliche" Meinung in die Diskussion einzubringen, sagt Douglas Crockford auf der Website des beliebten JSLint-Tools Folgendes :
quelle
let
Konstrukt) tut Block Umfang haben.let
kann in mehr als nur Mozilla JS verwendet werden ( siehe hier ). Es ist Teil der ES6-Spezifikation , aber die meisten Browser arbeiten noch an der Implementierung der Funktionen von ES6.Wie andere angemerkt haben, ist es eine Stilpräferenz. JSLint weist Sie möglicherweise an, nur eine
var
pro Funktion zu haben (wenn Sie die "guten Teile" verwenden). Wenn Sie also JSLint verwenden, um Ihren Code zu überprüfen (keine schlechte Idee, IMHO), werden Sie am Ende das erste Format mehr als das letztere verwenden.Auf der anderen Seite sagt derselbe Autor, Douglas Crockford , dass er jede Variable in seinen Codierungskonventionen in eine eigene Zeile setzen soll . Daher möchten Sie möglicherweise das Kontrollkästchen "Alle eine
var
pro Funktion" in JSLint deaktivieren, wenn Sie es verwenden. ;-);quelle
var
Anweisungen deklariert oder mit Kommas verkettet wurden.)Ich glaube nicht, dass es einen merklichen Unterschied gibt, für mich ist es nur eine persönliche Präferenz.
Ich hasse es, mehrere var-Deklarationen zu haben, also mache ich normalerweise:
Da es kürzer und wohl besser lesbar ist, ist kein
var
Rauschen zu sehen.quelle
var one, two, three four;
sehr schnell werden. Hinzufügen von Linien-for-the-Sake-of-Linien in Javascript kann gefährlich sein (JS Dolmetscher ihre eigenen einfügen können;
--wenn Sie nicht erwarten , dass dies dann werden Sie schnell Nebenwirkungen finden. Auch führende,
‚s Bug me , Schlüsselwörter, die ihre eigene Leitung bekommen, nerven mich, die;
auf ihrer eigenen Leitung nervt mich. Werden Sie von der Leitung bezahlt?var
Erklärung. (Obwohl ich Ihnen zustimme, dass führende Kommasvar
und das letzte Semikolon in ihren eigenen Zeilen stehen - alle dreiDa ich keine Verweise darauf sehe, ist hier ein Link zur ECMA-262-Spezifikation, die die zugrunde liegende Spezifikation für JavaScript ist. Die Grammatik von dieser Seite sagt:
Was Sie daraus ableiten können, ist die Verwendung von Kommas oder spielt keine Rolle. In jedem Fall wird es als a analysiert
VariableDeclaration
und genauso behandelt. Es sollte keinen Unterschied geben, wie die Skript-Engine die beiden Deklarationen behandelt. Die einzigen Unterschiede wären diejenigen, die bereits in anderen Antworten erwähnt wurden - mehr Platz sparen und praktisch unermessliche Unterschiede in der Zeit, die zum Anwenden der Grammatik benötigt wird, um alle Informationen zu finden,VariableDeclarations
wenn das Skript kompiliert wird.quelle
Der erste spart ein paar Zeichen - daher gibt es eine sehr geringe Einsparung in Bezug auf die JS-Dateigröße und damit den Bandbreitenverbrauch. Dies würde sich nur in extremen Fällen bemerkbar machen.
quelle
Ich bevorzuge die zweite Version (jede hat ihre eigene
var
). Ich denke, das liegt daran, dass ich aus einem C ++ - Hintergrund komme. In C ++ können Sie Variablen wie in Ihrem ersten Beispiel deklarieren, aber es ist verpönt (es führt leicht zu Fehlern, wenn Sie versuchen, auf diese Weise Zeiger zu erstellen).quelle
Wenn Sie Ihr Javascript minimieren, gibt es einen ziemlich großen Vorteil:
wird
Wohingegen
wird
Das sind weitere drei Instanzen
var
, die sich im Laufe der Zeit summieren können.Siehe die Artikelserie "A List Apart" "Better Javascript Minification", Teil 1 und Teil 2
quelle
var
s die Größe der gezippten Datei nicht nennenswert (wenn ich das Gzippen richtig verstehe).