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 |
\n | | Zeilenumbruch |
\t | | Tabulator |
\f | | Schreibmaschinen-Wagenrücklauf |
\r | | ebenfalls Schreibmaschinen-Wagenrücklauf |
\b | | Backspace |
\" | | 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.
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 |
this | | verweist auf das aktuelle Objekt |
Operatoren für einen rechtsstehenden Operanden ohne Zuweisungsfunktion |
Operator | | Bedeutung |
delete | | entfernt ein Objekt, eine Objekteigenschaft oder einen Array-Eintrag |
new | | erzeugt eine Instanz eines neuen Objekts |
typeof | | gibt 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
|
void | | Ausfü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
|