Hauptmenü

Untermenü

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 10;
    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.


1;
'2';
alert (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:


1;
'2';
alert (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