Javascript Variable
Eine Variable wird mit let oder const deklariert und ist der Speicher oder Platzhalter für Daten wie Zahlen, Strings oder Arrays, deren Wert sich während der Ausführung des Scripts ändern kann. Eine Javascript-Variable hat einen Namen, einen Typ und einen Wert.
const und let – Variable deklarieren und Initialisieren
Die Schlüsselwörter const und let erzeugen Konstanten bzw. Variablen in Javascript. Die »Deklaration« ist das Bekanntmachen der Variablen. Das Zuweisen des Werts ist die »Initialisierung« der Variablen.
let x; // Deklaration x = 42; // Initialisierung x = 12; // Neuer Inhalt – Wert ändern
Einer Javascript-Variablen, die mit let deklariert wurde, wird entweder direkt bei der Deklaration oder später im Laufe des Programms ein Anfangswert zugewiesen. Bis zur Zuweisung eines Werts (der Initialisierung) hat die Variable den Wert undefined.
Variablen, die mit const deklariert werden, sind unveränderlich – konstant. Ihnen muss sofort ein Wert zugewiesen werden, denn sie können im Verlauf des Programms nicht geändert werden.
const PI = 3.14; const arr = [17, 22, 5]; arr[1] = 18;
Die unveränderliche Variable arr ist eine Referenz oder Verweis auf ein Array. Eine erneute Initialisierung würde sofort zu einem Syntaxfehler führen.
const arr = [17, 18, 5]; // SyntaxError: Cannot declare a const variable twice: 'arr'.
Scope – der Gültigkeitsbereich von Variablen
Variablen gelten nicht innerhalb des gesamten Scripts, sondern nur innerhalb ihres umschließenden Blocks mit { und } – z.B. innerhalb von Bedingungen und Schleifen. Man kann den Wert der Variablen ändern, aber keine Variable gleichen Namens im gleichen Block deklarieren. Das gilt sowohl für Variablen, die mit let also auch für Variablen, die mit const deklariert wurden.
function foo() { let msg = "Hallo Welt"; … } let msg = 404;
Außerhalb des Blocks { } kann einer Variablen, die mit let deklariert wurde, ein anderer Wert – selbst von einem anderen Typ – zugewiesen werden. Das wäre keine gute Programmierpraxis, aber durchaus legal.
Innerhalb eines Blocks sind Variablen geschützt. Das reduziert Fehlerquellen, da Variablen einen überschaubaren Scope (Gültigkeitsbereich) haben.
const – Konstante
Korrekt gesehen ist eine Konstante keine Variable, denn eine Variable stehen für einen Speicherplatz, dessen Wert sich ändern kann. Konstante hingegen stehen für einen Speicherplatz, dessen Wert nach der Initialisierung nicht geändert werden kann.
Einer Konstanten muss also bei der Deklaration sofort ein Wert zugewiesen werden, denn nach der Deklaration kann einer Konstanten kein neuer Wert zugewiesen werden.Eine Variable mit const ist genauso wie let auf ihre Block-Umgebung oder Block-Scope eingeschränkt.
const arr = ["Blau", "Rost", "Grün"]; arr.push("Lila");
Die individuellen Werte von Arrays und Objekten, die als const angelegt werden, können geändert werden, Integer, Boolean und String hingegen nicht.
Das Schöne an const: Weil einer Variablen, die mit const vereinbart wurde, kein neuer Wert zugewiesen werden kann, gibt es weniger Nebeneffekte.
Schreibweisen für Variablen
In einer Definition können auch mehrere Variablen vereinbart werden – sie werden in Javascript einfach durch Kommas voneinander getrennt.
let name, adresse, hausnr; name = "Weihnachtsmann"; adresse = "Winterwald"; hausnr = 24;
Allerdings ist die ausführliche Schreibweise besser, denn sie lässt sich besser kommentieren und ist besser lesbar:
let name = "Weihnachtsmann"; // Name let adresse = "Winterwald"; // Adresse let hausnr = 24; // Hausnummer
Globale Variablen
Variablen in Javascript können ausdrücklich durch let, const oder implizit (ohne const oder let) – einfach durch die Zuweisung eines Anfangswerts vereinbart werden. Die einfache Zuweisung definiert eine globale Variable.
let name = "Weihnachtsmann"; // explizit durch Schlüsselwort let adresse = "Alaska"; // implizit durch Wertzuweisung
Globale Variablen gelten im gesamten Script. Jetzt klingt es zwar praktisch, dass die globale Variable im ganzen Script gilt – ist aber ausgesprochen gefährlich. Gerade einfache Variablennamen wie i, wert und x werden schnell auch an anderen Stellen des Scripts benutzt und überschreiben sich dann gegenseitig. Sobald Scripte von Dritten eingebunden werden, wären globale Variablen ein Wespennest.
Gute Programmierpraxis – Konventionen
Darum ist die ausdrückliche Deklaration mit let oder const die bessere Technik, während die implizite Vereinbarung einer Variablen als schlechte Programmierpraxis gilt.
Wird modernes Javascript im Strict Modus – strict-mode programmiert, entsteht sofort eine Fehlermeldung, wenn Variablen nicht definiert werden.
"use strict";
let name = "Meier";
if (vorname === "Ludwig") { // ReferenceError: Can't find variable: vorname
console.log ("Hierhin kommt das Script nicht mehr");
}
Gute Variablennamen
Javascript-Variablennamen
- bestehen aus Buchstaben (wobei auch ein Unterstrich "_" als Buchstabe zählt),
- aus Ziffern,
- dürfen keine Leerzeichen und Bindestriche enthalten,
- dürfen nicht mit einer Zahl, einem Sonderzeichen oder Satzzeichen anfangen,
- dürfen nicht mit einem Schlüsselwort übereinstimmen.
Zu den Programmierkonventionen für Javascript gehört der Camel Case oder camelCase. Gut lesbare Variablennamen, die aus zwei Wörtern zusammengesetzt sind beginnen mit einem kleingeschriebenen Wort, der Bindestrich fällt weg, das nächste Wort beginnt mit einem Großbuchstaben: maxHeight statt max-height.
Das erste Zeichen muss ein Buchstabe oder ein Unterstrich sein. Javascript ist zwar eine schwach typisierte Sprache, aber in Hinsicht auf die korrekte Schreibweise kennt Javascript keine Gnade.
Variablennamen sind case sensitive (Javascript achtet streng auf Groß- und Kleinschreibung), d.h., dass Name, name und NAme drei verschiedene Namen sind.
Korrekte Variablennamen | Nicht korrekt | Was ist falsch? |
---|---|---|
name1 | 10names | Variablen müssen mit einem Buchstaben oder einem Unterstrich beginnen |
price_tag | box.front | Der Punkt im Variablennamen ist nicht zulässig |
_abc | name#last | Das „#“-Zeichen ist nicht zulässig |
Abc_22 | A-23 | Das „-“-Zeichen – der Bindestrich – ist nicht zulässig |
A23 | 5 | Variablennamen müssen mit einem Buchstaben oder einem Unterstrich beginnen |
var Übermut = 4; var Π = Math.PI; |
var ❿ = "Zehn"; | Π ist ein valider Variablennamen, Übermut ebenfalls: Javascript steht auf Unicode. Aber ❿ führt zu einem Syntaxfehler. |
Illegale oder falsche Variablennamen erzeugen eine Fehlermeldung und verhindern die Ausführung des Programms.
const 10names = "10 Namen"; No identifiers allowed directly after numeric literal Uncaught SyntaxError: Invalid or unexpected token
Variablen und Datentypen
In Programmiersprachen wie C++ und Java muss der Typ der Variablen deklariert werden. Um eine Variable zum Speichern ganzzahliger Werte zu vereinbaren, muss der Typ explizit deklariert werden:
int num = 5; oder float fnum = 44.5;
Wenn eine Programmiersprache bei der Vereinbarung der Variablen den Datentyp erzwingt, wird sie als streng typisiert bezeichnet. Javascript hingegen ist eine dynamische oder locker typisierte Sprache, denn der Typ einer Variablen wird nicht ausdrücklich vereinbart:
let num = 5; let fnum = 44.5;
Javascript verlangt keine Typangabe bei der Deklaration, sondern findet selber heraus, welcher Datentyp in num und fnum gespeichert wird. Wir dürfen einer Variablen zunächst einen String zuweisen und später einen numerischen Wert. Bei der Ausführung des Programms wird der Javascript-Interpreter die Daten in den korrekten Typ konvertieren. In jeder der folgenden Anweisungen wird Javascript den Typ der Variablen konvertieren:
Anweisung | Konvertierung |
---|---|
let item = 5.5; | Zuweisung eines Fließkommawerts |
item = 44; | Konvertierung in Integer |
item = "Egon M."; | Konvertierung in String |
item = true; | Konvertierung in Boolean |
item = null; | Konvertierung in null-Wert |
Allerdings gilt die Zuweisung eines anderen Datentyps als schlechte Programmierpraxis.