3. JavaScript - Umgang mit Variablen

3.1. Deklaration
3.2. Manipulation
3.3. Steuerzeichen und besondere Notation
  3.3.1. in numerischen Werten
  3.3.2. in Zeichenketten
3.4. Operatoren
  3.4.1. Zuweisungsoperator
  3.4.2. Vergleichsoperatoren
  3.4.3. mathematische Operatoren
  3.4.4. boolesche Operatoren
  3.4.5. Bitoperatoren
  3.4.6. Zeichenkettenoperatoren
  3.4.7. spezielle Operatoren
  3.4.8. Rangfolge, Klammern

3.1. Deklaration

Variablen sind Namen für Speicherbereiche, in denen der Programmierer die Speicherung verschiedener Werte veranlassen kann. Variablen können ganze und gebrochene Zahlen, Zeichenketten, Wahrheitswerte, Objekte und auch Funktionen enthalten. Anders als in den meisten anderen Sprachen muß eine Variable vor ihrer Benutzung nicht unbedingt deklariert werden. Der Übersichtlichkeit wegen und um genau zu definieren, wo die Variable gelten soll, ist die Deklaration trotzdem sehr empfehlenswert. Momentan gibt es nur das reservierte Wort var dafür. Das heißt, daß der Typ einer Variablen, also die Art des Speicherinhaltes, nicht festgelegt werden muß und auch nicht kann. Dies ist ebenfalls eine Folge der Tatsache, daß JavaScript erst zur Laufzeit compiliert wird. Die Art der Speichervergabe wird daher immer erst während der Programmausführung entschieden. Allerdings kann einer Variablen schon während der Deklaration ein Wert zugewiesen werden. Ihr können jedoch auch nachher noch Werte eines anderen Typs zugewiesen werden.
var a=1,b=2,c=4,d=8;
var alpha,beta,gamma;
var name="Droeppez";
Im Beispiel werden die Variablen a,b,c und d deklariert und diesen die Werte 1,2,4 und 8 zugewiesen. Weiterhin werden alpha, beta und gamma deklariert. Die Variable name wird definiert und ihr wird die Zeichenkette "Droeppez" zugewiesen.

Durch diese Art der Deklaration lassen sich auch die Gültigkeitsbereiche von Variablen festlegen. Variablen, die innerhalb eines bestimmten Blockes oder einer Funktion deklariert werden, sind auch nur lokal innerhalb des jeweiligen Blockes oder der Funktion gültig. Variablen lassen sich auch außerhalb von Blöcken und Funktionen global definieren.

Genau wie bei Befehlen müssen auch Deklarationen mit Semikolon ; abgeschlossen werden.

3.2. Manipulation

Variablen werden mittels Gleichzeichen = zugewiesen. Die Form ist Variablenname=Wert;.
a=12;
b=52;
c=41;
d=a+b*c;
answer="Result: "+d;
Hier werden zuerst die Variablen a, b und c auf 12, 52 und 41 gesetzt. Hernach wird die mathematische Operation a+b*c ausgeführt und das Ergebnis nach d geschrieben. Anschließend wird ein Antwortsatz gebildet und der Variablen answer zugewiesen.

3.3. Steuerzeichen und besondere Notation

3.3.1. in numerischen Werten

Die Notation gebrochener Zahlen folgt den amerikanischen Regeln, anstelle des Kommas wird ein Punkt geschrieben.
z.B. a=5.273;
Auch die Exponentenschreibweise ist möglich.
z.B. a=5.273e3;
Hierfür fügt man den Buchstaben "e" oder auch "E" ein. In diesem Beispiel wurde die Zahl 5.273*103 notiert.

3.3.2. in Zeichenketten

Zeichenketten werden durch Gänsefüßchen " ein- und ausgeleitet. name="Ulrich Kritzner"; setzt beispielsweise die Variable name auf den Wert "Ulrich Kritzner".

Eine Zeichenkette darf auch Steuerzeichen wie Wagenrücklauf, Tabulator und Zeilenumbruch enthalten. Steuerzeichen werden durch einen umgekehrten Schrägstrich eingeleitet und durch einen Buchstaben repräsentiert.

Sonderzeichen
Notation Bedeutung
\nZeilenumbruch
\tTabulator
\fSchreibmaschinen-Wagenrücklauf
\rebenfalls Schreibmaschinen-Wagenrücklauf
\bBackspace
\"Gänsefüßchen
\\Backslash


3.4. Operatoren



3.4.1. Zuweisungsoperator

Zuweisungsoperator ist das Istgleichzeichen =. Die Beschreibung ist bereits im Abschnitt 3.2 enthalten, die Erwähnung erfolgt an dieser Stelle nur der Vollständigkeit halber, da auch das Istgleichzeichen ein Operator ist. Dem linken Operanden wird der Wert des rechten Operanden zugewiesen. Dabei übernimmt der linke Operand gleichzeitig den Typ des rechten Operanden. Eine Variable, die bis vor der Operation noch eine Zahl beinhaltete, kann beispielsweise eine Zeichenkette zugewiesen bekommen.

3.4.2. Vergleichsoperatoren

Operator Bedeutung
==vergleicht zwei Operanden auf Gleichheit
!=vergleicht zwei Operanden auf Verschiedenheit
>vergleicht, ob der linke Operand größer ist als der rechte
<vergleicht, ob der linke Operand kleiner ist als der rechte
>=vergleicht, ob der linke Operand größer ist als der rechte oder diesem gleich
<=vergleicht, ob der linke Operand kleiner ist als der rechte oder diesem gleich


Diese Operationen liefern als Ergebnis Wahrheitswerte, also entweder true oder false.
IsEqual= a==b;
IsDifferent= a!=b;
In diesem Beispiel wird die Variable IsEqual auf true gesetzt, wenn a den gleichen Wert hat wie b, ansonsten auf false. IsDifferent nimmt den genau entgegengesetzten Wert an. Hauptsächlich hat diese Form des Vergleiches jedoch Bedeutung für die bedingte Ausführung von Befehlen sowie für Schleifen.

3.4.3. mathematische Operatoren

Operatoren ohne Zuweisungsfunktion
Operator Bedeutung
+Addition
-Subtraktion
*Multiplikation
/Division
%Restwert einer ganzzahligen Division

Operatoren für zwei Operanden mit Zuweisungsfunktion, linker Operand wird gleichzeitig zugewiesen
Operator Bedeutung
+=Addition
-=Subtraktion
*=Multiplikation
/=Division
%=Restwert einer ganzzahligen Division

Operatoren für einen linksstehenden Operanden mit Zuweisungsfunktion
Operator Bedeutung
++Inkrementation
--Dekrementation


value=3+6*7;
value*=8;
value++;
In diesem Beispiel wird die Formel 3+6*7 gerechnet (also nach der Rangfolge zuerst 6 mal 7, dann 3 plus eben diesem Wert) und die Variable namens value auf diesen Wert gesetzt.
Danach wird value mit acht multipliziert. Man hätte stattdessen auch value=value*8; schreiben können.
Hernach wird value um eins erhöht. Alternative Schreibweisen hierfür sind auch value=value+1; oder value+=1;.

3.4.4. boolesche Operatoren

Operatoren ohne Zuweisungsfunktion
Operator Bedeutung
&&logisches Und
||logisches Oder
^^logisches Exclusiv-Oder (entweder-oder)
!logische Negation (nur ein rechter Operator)

Operatoren für zwei Operanden mit Zuweisungsfunktion, linker Operand wird gleichzeitig zugewiesen
Operator Bedeutung
&&=logisches Und
||=logisches Oder
^^=logisches Exclusiv-Oder (entweder-oder)


Diese Operatoren verknüpfen zwei Wahrheitswerte logisch. Das Ergebnis sind ebenfalls Wahrheitswerte, also entweder true oder false.
LogAnd= a&&b;
LogOr= a||b;
LogXOr= a^^b;
LogNeg= !a;
Dieses Beispiel verknüpft die Variablen a und b auf drei verschiedene Arten. Die Variable LogAnd erhält den Rückgabewert der Und-Verknüpfung, LogOr den der Oder-Verknüpfung, LogXOr den der Exclusiv-Oder-Verknüpfung. LogNeg wird der entgegengesetzte Wahrheitswert von a zugewiesen.

3.4.5. Bitoperatoren

Operatoren ohne Zuweisungsfunktion
Operator Bedeutung
&bitweises Und
|bitweises Oder
^bitweises Exclusiv-Oder
<<bitweise Verschiebung nach links
>>bitweise Verschiebung nach rechts
>>>bitweise Verschiebung nach rechts mit Null-Füllung

Operatoren für zwei Operanden mit Zuweisungsfunktion, linker Operand wird gleichzeitig zugewiesen
Operator Bedeutung
&=bitweises Und
|=bitweises Oder
^=bitweises Exclusiv-Oder
<<=bitweise Verschiebung nach links
>>=bitweise Verschiebung nach rechts
>>>=bitweise Verschiebung nach rechts mit Null-Füllung


Der Sinn dieser Operatoren ist die Verknüpfung ganzer Zahlen.
a= c&3;
b= a<<2;
Hier wird zuerst über die Variable c die Bitmaske 3 (=00..0011) gelegt und mit bitweisem Und verknüpft. Der so entstandene Wert wird der Variablen a zugewiesen. Danach wird das Bitmuster der so entstandenen Zahl um zwei Bit nach links verschoben, was einer Multiplikation mit 4 (=22) gleichkommt und der Wert an b übergeben.

3.4.6. Zeichenkettenoperatoren

Mit einfachem Plus + oder zuweisendem Plus += lassen sich zwei Zeichenketten aneinanderfügen. Auch Zahlen und Wahrheitswerte werden bei dieser Gelegenheit, wenn es sich für den Compiler/Interpreter eindeutig erkennbar um eine Zeichenkettenoperation handelt, in Zeichenketten umgewandelt.
FirstName="Ulrich";
NameOfFamily="Kritzner";
ArtistName="Droeppez";
author=FirstName+" "+NameOfFamily+" the "+ArtistName;
In dem Beispiel wird die Zeichenkette "Ulrich Kritzner the Droeppez" erzeugt.

3.4.7. spezielle Operatoren

Operatoren ohne Operanden
Operator Bedeutung
thisverweist auf das aktuelle Objekt

Operatoren für einen rechtsstehenden Operanden ohne Zuweisungsfunktion
Operator Bedeutung
deleteentfernt ein Objekt, eine Objekteigenschaft oder einen Array-Eintrag
newerzeugt eine Instanz eines neuen Objekts
typeofgibt den Typ eines Objekts oder einer Variablen zurück
"number" für Zahlen,
"boolean" für Wahrheitswerte,
"string" für Zeichenketten,
"object" für Objekte und Arrays,
"function" für Funktionen,
"undefined" für undefinierte Ausdrücke
voidAusführung ohne Ermittlung eines Resultats

andere Operatoren
Operator Bedeutung
?:Einfaches if...then...else...
,ermittelt zwei Ausdrücke und gibt den rechten zurück


Beispiel:
a= new Array();
b= typeof a;
Hier nimmt zuerst die Variable a ein Array auf. Die Variable b übernimmt daraufhin den Typ-String (in dem Fall "object").

3.4.8. Rangfolge, Klammern

Die Reihenfolge von Operationen läßt sich durch Klammerung ( ) vorgeben.
a= (b+c)*d;
IsTrue= ((beta-gamma)/delta)<=(b+c);
Andernfalls wird von links nach rechts interpretiert, wenn es sich um gleichrangige Operationen handelt. Bei unterschiedlicher Rangfolge werden höherrangige Operationen vor niederrangigen ausgeführt.

Rangfolge
Rang Operatoren / Trennzeichen
1,
2 = += -= *= /= %= &&= ||= ^^= &= |= ^= <<= >>= >>>=
3?:
4||
5^^
6&&
7|
8^
9&
10== !=
11< > <= >=
12<< >> >>>
13- +
14* / %
15! ~ ++ --
16() [] .


Autor: Ulrich Kritzner