JavaScript - Grundlagen - Variablen
1. Der Unterschied
Im Gegensatz zu PHP beginnen Variablen in JavaScript NICHT mit einem $-Zeichen. Ansonsten gelten die Regeln wie bei PHP, mit einer Ausnahme. Es dürfen keine so genannten reservierten Wörter benutzt werden.
// Funktioniert
my_delete = true;
// Funktioniert nicht, da delete ein Schlüsselwort ist
delete = true;
2. Geltungsbereich
Variablen sind generell erst mal immer global verfügbar. Das unterscheidet JavaScript von PHP. Wenn man zum
Beispiel innerhalb einer Funktion mit lokalen Variablen arbeiten möchte, so muss man dafür das Schlüsselwort var
voranstellen.
function irgendwas ()
{
// global verfügbar
meine_variable = 1;
// nur innerhalb der Funktion verfügbar
var meine_variable = 1;
}
Bei Objekten gibt es ein paar Feinheiten, die ihr hier nachlesen könnt. Ansonsten ist es außerhalb von Objekten oder Funktionen relativ egal, welche Variante ihr benutzt.
Ein Hinweis
Wie ich schon sagte ist es aus praktischer Sicht ziemlich unerheblich ob man nun mit oder ohne var
außerhalb von Funktionen arbeitet.
Es gibt allerdings einen kleinen Unterschied. Bei der Verwendung von var
wird tatsächlich eine globale Variable
erzeugt. Lässt man es weg, wird dem globalen Objekt eine Eigenschaft hinzugefügt. Und nun die Feinheiten. Eine globale Variable
kann man mit delete
nicht löschen, die globale Eigenschaft dagegen schon.
var a = 10;
b = 20;
delete a;
delete b;
alert(a);
alert(b);
Beim ersten alert
bekommt ihr immer noch eine 10
ausgegeben, beim zweiten haut es euch einen Fehler um die Ohren,
da die Eigenschaft b
nicht mehr verfügbar ist.
3. "Variable" Variablen
Gibt es in dem Sinne nicht. Jedenfalls nicht so, wie es in PHP möglich ist. Das liegt daran, dass JavaScript (fast) nur Objekte kennt. Dort gibt es dann so eine Art von "variabler Variablen". Dazu komme ich aber gleich.
4. Typisierung
JavaScript gehört zwar auch wie PHP zu den schwach getypten Sprachen. Allerdings gibt es dennoch einen kleinen aber feinen Unterschied, auf den man unbedingt achten sollte. Sonst kommt es zu ziemlich seltsamen Ergebnissen.
Beispiel
Folgender Code ergibt unter PHP eine 3
, da die Variable $b
automatisch in eine Zahl umgewandelt wird.
$a = 1;
$b = '2';
echo $a + $b;
Bei JavaScript dagegen wirft der folgende Code eine 12
aus.
a = 1;
b = '2';
alert (a + b);
Erläuterung
In PHP geschieht folgende Prozedur. Der Interpreter bekommt zwei Variablen, die über den Operator +
addiert werden sollen.
Also wandelt er zuerst die Variable $b
in eine Zahl um und führt dann die Berechnung aus.
Bei JavaScript sieht das ein wenig anders aus. Denn in dieser Sprache steht das +
nicht nur für eine Addition, sondern auch
für den Verknüpfungsoperater, der in PHP ja der Punkt (.
) ist. Also passiert dies. Zuerst wird die Zahl 1
genommen. Dann kommt die Zeichenkette 2
und die wird an die 1
angehängt. Darum ist das Ergebnis auch nicht
3
sondern 12
.
Typumwandlung
Passt also auf, wie ihr Zahlen in JavaScript definiert. Wenn denn etwas nicht so funktioniert, wie es sollte, muss man vorher eine entsprechende Typumwandlung vornehmen. In diesem Falle sähe die so aus:
a = 1;
b = '2';
alert (a + Number(b));
Oder es passieren so lustige Dinge wie das Folgende.
var num = '10';
alert (num + 5); // Ergibt 105
alert (num * 5); // Ergibt 50
5. Konstanten
Hier gibt es ein großes Problem. Das Schlüsselwort const
wurde zwar mit JavaScript 1.5 eingeführt, aber leider kommt damit
der Internet Explorer selbst in Version 10 nicht klar. Warum, weiß ich auch nicht. Angeblich sollen die jeweiligen JScript-Versionen dieser
Browser kompatibel zu 1.5 sein, aber hier hat M$ wohl gepennt.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt