Hallo,
Das 'var' gibt ja an, dass es sich bei "var d = new Date()" um eine lokale Variable handelt..
Genau. Es ist eine Grundregel der JavaScript-Programmierung, möglichst lokale anstatt globale Variablen zu erzeugen.
Wird dieses 'var' dann auch auf die folgenden Anweisungen übertragen wenn man Kommata verwendet?
Ja, diese Zuweisungen sind dann ebenfalls Deklarationen von lokalen Variablen.
var foo = 1, bar = 2, …; ist das sogenannte Variablen-Statement. Es lassen sich mehrere Variablen durch Komma getrennt notieren, und mit dem Zuweisungsoperator lässt sich ihnen direkt ein Wert zuweisen.
Nur deklarieren:
var foo, bar, qux;
Bar wird ein Wert zugewiesen:
var foo, bar = 1, qux;
Das entspricht jeweils drei separaten Variablen-Statements. Das heißt, es ist austauschbar mit:
var foo;
var bar = 1;
var qux;
Lässt du das Komma weg, kann es einen Referenzfehler geben. Wenn nicht, dann werden globale Variablen erzeugt.
Drei lokale Variablen:
var foo = 1,
bar = 2,
qux = 3;
Fehler:
var foo; // Sollte ein Komma sein
bar = 2; // Erzeugt globale Variable
qux; // ReferenceError: qux kann nicht gefunden werden
Eine lokale Variable, zwei globale:
var foo = 1; // Sollte ein Komma sein
bar = 2; // Dito, globale Variable
qux = 3; // Global
Komma vergessen kann auch zu globalen Variabl führen:
var foo = 1 // Komma fehlt, also fügt der JS-Parser ein Semikolon ein
bar = 2, // Globale Variable
qux = 3; // Dito
Solche Fehler kann man vermeiden, indem man konsequent im ECMAScript-5-Strict-Mode arbeitet.
Beispiel:
var registerVariables = function() {
// Aktiviere Strict-Mode
'use strict';
var foo = 1; // Hier sollte ein Komma stehen
bar = 2; // <- wirft einen ReferenceError, weil eine globale Variable erzeugt werden würde
// Wird nicht mehr ausgeführt:
alert(foo + bar);
};
Im Strict Mode lassen sich globale Variablen nur explizit mit window.globaleVariable = 'wert'
erzeugen.
Mathias