Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 <<   zurück
JavaScript und AJAX von Christian Wenz
Das umfassende Handbuch
Buch: JavaScript und AJAX

JavaScript und AJAX
839 S., mit DVD, 39,90 Euro
Galileo Computing
ISBN 3-89842-859-1
gp Kapitel 4 Programmieren mit JavaScript
  gp 4.1 Variablen
    gp 4.1.1 Namensgebung
    gp 4.1.2 Numerische Variablen
    gp 4.1.3 Zeichenketten
    gp 4.1.4 Boolesche Variablen
    gp 4.1.5 Variablendeklaration
  gp 4.2 Operatoren
    gp 4.2.1 Arithmetische Operatoren
    gp 4.2.2 Boolesche Operatoren
    gp 4.2.3 String-Operatoren
    gp 4.2.4 Umwandlung zwischen den Variablentypen
  gp 4.3 Kontrollstrukturen: Schleifen
    gp 4.3.1 For-Schleifen
    gp 4.3.2 Do-while-Schleife
    gp 4.3.3 While-Schleife
    gp 4.3.4 For-in-Schleife
    gp 4.3.5 Schleifensteuerung
  gp 4.4 Kontrollstrukturen: Fallunterscheidung
    gp 4.4.1 If-Anweisung
    gp 4.4.2 Switch-Anweisung
    gp 4.4.3 Try
  gp 4.5 Datenspeicherung
    gp 4.5.1 Die eval()-Funktion
    gp 4.5.2 Arrays
  gp 4.6 Funktionen
  gp 4.7 Objekte


Galileo Computing

4.2 Operatoren  downtop

Durch Operatoren wird eine gewisse Anzahl von Variablen miteinander kombiniert. Beispiele für Operatoren sind die Grundrechenarten. Durch den Plus-Operator werden zwei Zahlen miteinander kombiniert, und als Ergebnis erhält man die Summe dieser beiden Zahlen. Man unterscheidet – auch je nach Typ der beteiligten Variablen – verschiedene Arten von Operatoren.


Galileo Computing

4.2.1 Arithmetische Operatoren  downtop

Diese Art von Operatoren arbeitet mit numerischen Variablen. Sie sollten also sicherstellen, dass auch wirklich Zahlenvariablen vorliegen, sonst könnten Sie eine Fehlermeldung erhalten. In Abschnitt 9.7 finden Sie Techniken, wie man Zahlenvariablen als solche erkennen kann. Die folgende Tabelle zeigt alle arithmetischen Operatoren anhand eines Beispiels.


Tabelle 4.2     Arithmetische Operatoren

Operator Beschreibung Beispiel Ergebnis (Wert von a)
+ Addition a = 7 + 4 11
- Substraktion a = 7 – 4 3
* Multiplikation a = 7 * 4 28
/ Division a = 7 / 4 1.75
% Modulo (Restrechnung)1 a = 7  % 4 3
- Negation b = 7 a = –b –7

Will man eine Variable um einen bestimmten Wert erhöhen, kann man sich des folgenden Konstrukts bedienen:

AnzahlAuflagen = AnzahlAuflagen + 1;

Der Variablen AnzahlAuflagen wird als Wert der alte Wert dieser Variablen plus fünf zugewiesen. Der Wert der Variablen wird also de facto um eins erhöht. In der Praxis kommt es sehr häufig vor, dass der Wert einer Variablen um genau eins erhöht oder verringert werden soll; für diesen Fall sieht JavaScript eine Abkürzung vor:

gp  AnzahlAuflagen++ erhöht den Wert der Variablen um eins.
gp  AnzahlAuflagen-- verringert den Wert der Variablen um eins (etwa, wenn eine Auflage eingestampft werden müsste?!).

Die Operatoren ++ und -- können auch direkt vor dem Variablennamen stehen. Der Unterschied liegt in der Reihenfolge, in der diese Operation im Vergleich mit anderen Operationen ausgeführt werden soll. Am Beispiel des Operators ++ soll das einmal durchexerziert werden; -- verhält sich analog.

Das Endergebnis des Standalone-Ausdrucks (des »alleinstehenden« Ausdrucks)

AnzahlAuflagen++;

hat zunächst denselben Effekt (nämlich: Erhöhung um 1) wie

++AnzahlAuflagen;

Einen Unterschied stellt man jedoch fest, wenn der Ausdruck bei einer Zuweisung verwendet wird:

var Auflagen = 7;
var Anzahl = ++AnzahlAuflagen;
var Anzahl2 = AnzahlAuflagen++;

Welchen Wert hat Anzahl, welchen Wert hat Anzahl2?

Die (vielleicht etwas überraschende) Antwort lautet: Anzahl hat den Wert 8, Anzahl2 hat auch den Wert 8. Betrachten Sie zunächst die zweite Zeile:

var Anzahl = ++AnzahlAuflagen;

Der ++-Operator steht vor dem Variablennamen. Das bedeutet hier, dass zunächst diese Operation (AnzahlAuflagen um eins erhöhen) ausgeführt und dann der neue Wert (8) der Variablen Anzahl zugewiesen wird.

Bei der dritten Zeile ist es genau andersherum:

var Anzahl2 = AnzahlAuflagen++;

Zuerst wird der Variablen Anzahl2 der (aktuelle) Wert von AnzahlAuflagen zugewiesen, dann wird der Wert von AnzahlAuflagen um eins vergrößert.

Wenn man den Wert einer Variablen nicht um exakt eins erhöhen oder verringern will, kann man sich einer anderen Abkürzung bedienen. Diese Abkürzung existiert für jede der vier Grundrechenarten sowie für den Modulo-Operator:


Tabelle 4.3     Abkürzungen für arithmetische Operationen

Operator Bedeutung Langform Kurzform
+= Addition a = a + b a += b
–= Subtraktion a = a – b a –= b
*= Multiplikation a = a * b a *= b
/= Division a = a / b a /= b
%= Modulo a = a % b a %= b

Auch in JavaScript gilt: Punktrechnung geht vor Strichrechnung. Multiplikationen und Divisionen werden also vor Additionen und Subtraktionen ausgeführt. Der folgende Ausdruck liefert daher 7 und nicht 9:

var PunktVorStrich = 1 + 2 * 3;

Galileo Computing

4.2.2 Boolesche Operatoren  downtop

Mit Logikoperatoren (oder booleschen Operatoren) kann man Wahrheitswerte miteinander verknüpfen. Die Bedeutung der Operatoren ist die mathematische Bedeutung, nicht unbedingt die umgangssprachliche Bedeutung. Aus diesem Grund werden die einzelnen Operatoren hier explizit vorgestellt.

Nur, wenn beide (bzw. alle) beteiligten Variablen den Wert true haben, liefert die Operation true zurück, ansonsten false.

var t = true;
var f = false;
var bool1 = t && f;  //liefert false
var bool2 = t && t;  //liefert true

Ist eine der beteiligten Variablen true, so liefert die Operation true zurück. Das Ergebnis ist nur dann false, wenn alle Variablen den Wert false haben. Hier liegt ein Unterschied zum Deutschen vor, denn dort bedeutet »oder« eher »entweder-oder«: Das Ergebnis ist nur dann true, wenn genau eine der beteiligten Variablen den Wert true hat.

var t = true;
var f1 = false;
var f2 = false;
var bool1 = t || f1 || f2;  //liefert true
var bool2 = f1 || f2;       //liefert false

Der Negationsoperator macht true zu false und false zu true.

var t = true;
var f = false;
var bool1 = !t;  //liefert false
var bool2 = !f;  //liefert true

Wie Sie bereits gesehen haben, genügt genau eine Variable mit dem Wert true, damit das Ergebnis einer Oder-Verknüpfung ganz sicher den Wert true hat. Analog liefert eine Und-Verknüpfung auf jeden Fall den Wert false, wenn eine Variable den Wert false hat.

JavaScript – zumindest die existierenden Implementierungen – benutzt hier das Prinzip der so genannten Short Evaluation (wörtlich: kurze Auswertung). Bei einer Und- bzw. Oder-Verknüpfung werden die beteiligten Variablen von links nach rechts durchgegangen. Sollte bei einer dieser Variablen aufgrund ihres Werts das Ergebnis der gesamten Operation schon feststehen, wird der Rest nicht weiter ausgewertet.

Hier ein Beispiel:

var f = false;
var bool = f && andereVariable;

Auf andereVariable wird hier gar nicht erst zugegriffen: Die Variable f ist false, damit kann die &&-Verknüpfung (logisches Und) nur false als Ergebnis haben.

Vergleichsoperatoren werden meistens bei Zahlenwerten verwendet. Auch bei Zeichenketten sind diese Vergleiche möglich. Hier richtet sich die Rangfolge der einzelnen Zeichen (welches Zeichen ist »größer« als ein anderes?) nach dem ASCII-Code des Zeichens.


Tabelle 4.4     Vergleichsoperatoren

Operator Beschreibung Beispiel Ergebnis (Wert für a)
== Gleich a = (3 == 4) a = ("Java" == "JavaScript") false
!= Ungleich a = (3 != 4) a = ("Java" != "JavaScript") true
> Größer als a = ( 3 > 4) false
< Kleiner als a = (3 < 4 ) true
>= Größer oder gleich a = ( 3 >= 4) false
<= Kleiner oder gleich a = (3 <= 4 ) true

Eine häufige Fehlerquelle ist die Verwechslung der Zuweisung = mit dem Vergleichsoperator ==. Ab JavaScript Version 1.3 gibt der Interpreter eine Fehlermeldung aus, wenn offensichtlich ein Vergleich durchgeführt werden soll, aber der Zuweisungsoperator verwendet wird.


Galileo Computing

4.2.3 String-Operatoren  downtop

Auch mit Zeichenketten kann man »rechnen«; man kann zwei Zeichenketten aneinander hängen. Hierzu wird ebenfalls der Plus-Operator (+) verwendet:

var vorne = "Galileo";
var hinten = "Press";
var Verlag = vorne + " " + hinten;  //liefert "Galileo Press"

Ansonsten kann man mit Zeichenketten nicht rechnen. Dennoch sollen an dieser Stelle noch drei Möglichkeiten vorgestellt werden, um mit Zeichenketten etwas anzufangen:

gp  Zeichenkette.length: Liefert die Anzahl der Zeichen in einer Zeichenkette zurück.
gp  Zeichenkette.charAt(x): Liefert das Zeichen an der Position x in der Zeichenkette zurück. Dabei beginnt die Zählung bei 0, das vierte Zeichen erhält man also mit Zeichenkette.charAt(3).
gp  Zeichenkette.substring(start, ende): Liefert eine Teilzeichenkette zurück, und zwar ab dem Zeichen an der Position start (die Zählung beginnt wieder bei 0) und bis zu dem Zeichen vor dem Zeichen an der Position ende.

Hierzu ein kleines Beispiel. In den Variablen a und b stehen das erste Zeichen der Zeichenkette und die folgenden Zeichen:

var z = "Galileo press";
var a = z.charAt(0);  //a == "G"
var b = z.substring(1, z.length);  //b == "alileo Press"

Galileo Computing

4.2.4 Umwandlung zwischen den Variablentypen  toptop

Die vorgestellten Operatoren können auch dazu verwendet werden, Umwandlungen zwischen den einzelnen Variablentypen durchzuführen. JavaScript ist in Sachen Variablentypus nicht so strikt wie andere Programmiersprachen. Eine Variable kann auch ihren Typ während des Programmablaufs ändern. Beispielsweise werden Sie in einem späteren Kapitel feststellen, dass Formulareingaben stets als Zeichenketten vorliegen. Wenn Sie sich aber sicher sind, dass die Zeichenkette eine korrekt formatierte Zahl enthält, können Sie JavaScript dazu zwingen, die Variable als Zahlenwert zu betrachten. Der Trick besteht darin, die Variable mit eins zu multiplizieren (oder 0 zu addieren). Eine Multiplikation kann nur mit Zahlenwerten durchgeführt werden, so dass JavaScript die Variable in eine Zahl umwandelt – und eine Multiplikation mit eins ändert am Wert der Zahl auch nichts.

Außerdem ist es manchmal notwendig, eine boolesche oder eine numerische Variable in eine Zeichenkette umzuwandeln. Diesmal muss der Konkatenationsoperator (Verkettungsoperator), das Plus, verwendet werden. Indem eine Variable mit einer leeren Zeichenkette konkateniert (verkettet) wird, erhält man als Ergebnis eine Zeichenkette, ändert aber ansonsten den Wert der Variablen nicht.

var AnzahlAuflagen = "7";
AnzahlAuflagen *= 1;  //Zeichenkette in Zahl
var wahrheitswert = true;
wahrheitswert += "";  //Wahrheitswert in Zeichenkette
var Anzahl = 8;
Anzahl += "";  //Zahl in Zeichenkette

JavaScript führt zwar eine automatische Typenkonvertierung durch, aber nicht immer in die gewünschte Richtung:

var siebenundvierzig = "47";
var summe = siebenundvierzig + 11;  // "4711", nicht 58

JavaScript stellt auch ein paar Funktionen zur Verfügung, um Umwandlungen durchzuführen. Durch parseInt() wird eine Zeichenkette in eine (ganzzahlige) Zahl umgewandelt, durch parseFloat() in eine Fließkommazahl. Innerhalb der runden Klammern wird die Zeichenkette angegeben:

var zahl1 = parseInt("47");  //liefert 47 als Zahl
var zahl2 = parseInt("47.11");  //liefert 47,11 dezimal

Hierauf gehen wir an späterer Stelle noch einmal en detail ein.

 <<   zurück
  
  Zum Katalog
Zum Katalog: JavaScript und AJAX
JavaScript und AJAX
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: JavaScript und AJAX - Das Video-Training






 JavaScript und AJAX -
 Das Video-Training


Zum Katalog: Webseiten programmieren und gestalten






 Webseiten
 programmieren
 und gestalten


Zum Katalog: XHTML, HTML und CSS






 XHTML, HTML und CSS


Zum Katalog: CSS-Praxis






 CSS-Praxis


Zum Katalog: AJAX






 AJAX


Zum Katalog: PHP 5 und MySQL 5






 PHP 5 und MySQL 5


Zum Katalog: TYPO3 4.0






 TYPO3 4.0


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de