8.4 Vergleichsoperatoren
 
Die Vergleichsoperatoren erzeugen immer einen booleschen Wert (Wahrheitswert), also ein true oder ein false. Wenn das Ergebnis eines kompletten Ausdrucks dem Datentyp boolean entspricht, dann nennt man so einen Ausdruck Bedingung. Ein Beispiel:
alter > 60
punkte > highscore
gewicht < 60
login == kennwort
=== ungleich == ungleich =
Ein beliebter kleiner Fehler mit großer Auswirkung ist die Verwechslung des Zuweisungsoperators = mit dem Vergleichsoperator ==. Bitte achten Sie unbedingt auf den korrekten Einsatz dieser beiden Operatoren! Übrigens gibt es mit dem dreifachen Gleichheitszeichen noch eine weitere verwechselbare Alternative. Dieser als strikte Gleicheit bezeichnete Operator vergleicht nicht nur den Wert, sondern auch den Typ.
Tabelle 8.4
Die wichtigsten Vergleichsoperatoren
Operator
|
Beschreibung
|
<
|
Kleiner als
|
<=
|
Kleiner als oder gleich
|
>
|
Größer als
|
>=
|
Größer als oder gleich
|
==
|
Genau gleich
|
!=
|
Ungleich
|
===
|
Strikt gleich
|
!==
|
Strikt ungleich
|
8.4.1 < (kleiner als)
 
Der Operator < überprüft, ob ein Ausdruck kleiner als ein anderer Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zahlen zur Verfügung. Seit dem Flash Player 5 können Sie diesen Operator ebenfalls für Zeichenketten einsetzen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 4-Formates vergleichen müssen, dann wählen Sie den lt-Operator. |
|
|
|
Syntax: |
ausdruck < ausdruck
|
Parameter: |
|
Die Ausdrücke stehen im Flash 4 Player für Zahlen. Seit Flash 5 wird überprüft, ob es sich bei beiden Operatoren um Zeichenketten handelt. Andernfalls müssen die Werte der Ausdrücke Zahlen ergeben. |
|
|
|
Ergebnis: |
|
Sollte der erste Ausdruck kleiner als der zweite sein, dann ist das Ergebnis true, andernfalls false. Dies gilt auch dann, wenn beide Ausdrücke Zeichenketten darstellen. In diesem Fall wird die Groß- und Kleinschreibung berücksichtigt. |
|
|
|
Beispiel: |
|
Das folgende Beispiel überprüft zwei Zahlen. ActionScript gibt das korrekte Ergebnis aus, da die Bedingung wahr ist: |
|
|
// Vergleich von Zahlen
if (20<100) {
trace("20 ist kleiner 100");
} else {
trace("100 ist kleiner oder gleich 20");
}
|
Das nächste Beispiel verhält sich abhängig von der Flash-Version unterschiedlich. Flash 4 ermittelt, dass 20 kleiner als 100 ist, durch einen nummerischen Vergleich. Ab Flash 5 ist das Ergebnis hingegen, dass die Zeichenkette »20« größer als »100« ist, da bereits das erste Zeichen größer ist: |
|
|
// Vergleich von Zeichenketten
if ("20"<"100") {
trace("20 ist kleiner 100");
} else {
trace("100 ist kleiner oder gleich 20");
}
8.4.2 <= (kleiner als oder gleich)
 
Der Operator <= überprüft, ob ein Ausdruck kleiner oder gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zahlen zur Verfügung. Seit dem Flash Player 5 können Sie diesen Operator ebenfalls für Zeichenketten einsetzen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 4-Formates vergleichen müssen, dann wählen Sie den le-Operator. |
|
|
|
Syntax: |
ausdruck <= ausdruck
|
Parameter: |
|
Die Ausdrücke stehen im Flash 4 Player für Zahlen. Seit Flash 5 wird überprüft, ob es sich bei beiden Operatoren um Zeichenketten handelt. Andernfalls müssen die Werte der Ausdrücke Zahlen ergeben. |
|
|
|
Ergebnis: |
|
Sollte der erste Ausdruck kleiner oder gleich dem zweiten sein, dann ist das Ergebnis true, andernfalls false. Dies gilt auch dann, wenn beide Ausdrücke Zeichenketten darstellen. In diesem Fall wird die Groß- und Kleinschreibung berücksichtigt. |
|
|
|
Beispiel: |
|
Das folgende Beispiel überprüft zwei Zahlen. ActionScript gibt das korrekte Ergebnis aus, da die Bedingung wahr ist: |
|
|
// Vergleich von Zahlen
if (99<=100) {
trace("99 ist kleiner oder gleich 100");
} else {
trace("100 ist kleiner als 99");
}
|
Das nächste Beispiel verhält sich abhängig von der Flash-Version unterschiedlich. Flash 4 ermittelt, dass 0 kleiner oder gleich 0 ist, da die Zeichenketten diesen nummerischen Wert haben. Die Ausgabe ist dann »sascha ist kleiner oder gleich Sascha«. Ab Flash 5 ist das Ergebnis hingegen, dass die Zeichenkette »sascha« größer als »Sascha« ist, da bereits der erste Kleinbuchstabe größer als der Großbuchstabe ist (dies hängt mit den Unicode-Werten der Zeichen zusammen, die für Kleinbuchstaben größer als für Großbuchstaben sind): |
|
|
// Vergleich von Zeichenketten
if ("sascha"<="Sascha") {
trace("sascha ist kleiner oder gleich Sascha");
} else {
trace("Sascha ist kleiner sascha");
}
8.4.3 > (größer als)
 
Der Operator > überprüft, ob ein Ausdruck größer als ein anderer Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zahlen zur Verfügung. Seit dem Flash Player 5 können Sie diesen Operator ebenfalls für Zeichenketten einsetzen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 4-Formates vergleichen müssen, dann wählen Sie den gt-Operator. |
|
|
|
Syntax: |
ausdruck > ausdruck
|
Parameter: |
|
Die Ausdrücke stehen im Flash 4 Player für Zahlen. Seit Flash 5 wird überprüft, ob es sich bei beiden Operatoren um Zeichenketten handelt. Andernfalls müssen die Werte der Ausdrücke Zahlen ergeben. |
|
|
|
Ergebnis: |
|
Sollte der erste Ausdruck größer als der zweite sein, dann ist das Ergebnis true, andernfalls false. Dies gilt auch dann, wenn beide Ausdrücke Zeichenketten darstellen. In diesem Fall wird die Groß- und Kleinschreibung berücksichtigt. |
|
|
|
Beispiel: |
|
Das folgende Beispiel überprüft zwei Zahlen. ActionScript gibt das korrekte Ergebnis aus, da die Bedingung wahr ist: |
|
|
// Vergleich von Zahlen
if (Math.E > Math.PI) {
trace("E ist gößer PI");
} else {
trace("E ist kleiner oder gleich Pi");
}
|
Das nächste Beispiel verhält sich abhängig von der Flash-Version unterschiedlich. Flash 5 ermittelt, dass d größer D ist, da die interne Darstellung der Zeichenketten im Unicode-Format dies ergibt. Die Ausgabe ist dann »d ist größer D«. In Flash 4 werden die Zeichenketten hingegen in Zahlen konvertiert, was dazu führt, dass 0 mit 0 verglichen wird: |
|
|
// Vergleich von Zeichenketten
if ("\u0064" > "\u0044") {
trace("d ist größer D");
} else {
trace("d ist kleiner oder gleich D");
}
8.4.4 >= (größer als oder gleich)
 
Der Operator >= überprüft, ob ein Ausdruck größer oder gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zahlen zur Verfügung. Seit dem Flash Player 5 können Sie diesen Operator ebenfalls für Zeichenketten einsetzen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 4-Formates vergleichen müssen, dann wählen Sie den ge-Operator. |
|
|
|
Syntax: |
ausdruck >= ausdruck
|
Parameter: |
|
Die Ausdrücke stehen im Flash 4 Player für Zahlen. Seit Flash 5 wird überprüft, ob es sich bei beiden Operatoren um Zeichenketten handelt. Andernfalls müssen die Werte der Ausdrücke Zahlen ergeben. |
|
|
|
Ergebnis: |
|
Sollte der erste Ausdruck größer oder gleich dem zweiten sein, dann ist das Ergebnis true, andernfalls false. Dies gilt auch dann, wenn beide Ausdrücke Zeichenketten darstellen. In diesem Fall wird die Groß- und Kleinschreibung berücksichtigt. |
|
|
8.4.5 lt (kleiner als für Strings in Flash 4)
 
Der Operator lt (less than) überprüft, ob ein Ausdruck kleiner als ein anderer Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zeichenketten zur Verfügung und wird nicht mehr empfohlen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 5-Formates oder höher vergleichen wollen, dann wählen Sie den <-Operator. |
|
|
|
Syntax: |
ausdruck lt ausdruck
|
Parameter: |
Die Ausdrücke stehen für Zeichenketten.
|
Ergebnis: |
|
Sollte die erste Zeichenkette kleiner als die zweite sein, dann ist das Ergebnis true, andernfalls false. Die Groß- und Kleinschreibung wird berücksichtigt. Bitte beachten Sie, dass ActionScript andere Datentypen ebenfalls in Zeichenketten konvertiert. In diesem Fall ist beispielsweise 100 kleiner 20, da ActionScript den Vergleich »100« kleiner »20« durchführt. |
|
|
8.4.6 le (kleiner oder gleich für Strings in Flash 4)
 
Der Operator le (less or equal) überprüft, ob ein Ausdruck kleiner oder gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zeichenketten zur Verfügung und wird nicht mehr empfohlen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 5-Formates oder höher vergleichen wollen, dann wählen Sie den <=-Operator. |
|
|
|
Syntax: |
ausdruck le ausdruck
|
Parameter: |
Die Ausdrücke stehen für Zeichenketten.
|
Ergebnis: |
|
Sollte die erste Zeichenkette kleiner oder gleich der zweiten sein, dann ist das Ergebnis true, andernfalls false. Die Groß- und Kleinschreibung wird berücksichtigt. Bitte beachten Sie, dass ActionScript andere Datentypen ebenfalls in Zeichenketten konvertiert. In diesem Fall ist beispielsweise 100 kleiner oder gleich 20, da ActionScript den Vergleich »100« kleiner oder gleich »20« durchführt. |
|
|
8.4.7 gt (größer als für Strings in Flash 4)
 
Der Operator gt (greater than) überprüft, ob ein Ausdruck größer als ein anderer Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zeichenketten zur Verfügung und wird nicht mehr empfohlen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 5-Formates oder höher vergleichen wollen, dann wählen Sie den >-Operator. |
|
|
|
Syntax: |
ausdruck gt ausdruck
|
Parameter: |
Die Ausdrücke stehen für Zeichenketten.
|
Ergebnis: |
|
Sollte die erste Zeichenkette größer als die zweite sein, dann ist das Ergebnis true, andernfalls false. Die Groß- und Kleinschreibung wird berücksichtigt. Bitte beachten Sie, dass ActionScript andere Datentypen ebenfalls in Zeichenketten konvertiert. In diesem Fall ist beispielsweise 20 größer 100, da ActionScript den Vergleich »20« größer »100« durchführt. |
|
|
8.4.8 ge (größer oder gleich für Strings in Flash 4)
 
Der Operator ge (greater or equal) überprüft, ob ein Ausdruck größer oder gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zeichenketten zur Verfügung und wird nicht mehr empfohlen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 5-Formates oder höher vergleichen wollen, dann wählen Sie den <=-Operator. |
|
|
|
Syntax: |
ausdruck ge ausdruck
|
Parameter: |
Die Ausdrücke stehen für Zeichenketten.
|
Ergebnis: |
|
Sollte die erste Zeichenkette größer oder gleich der zweiten sein, dann ist das Ergebnis true, andernfalls false. Die Groß- und Kleinschreibung wird berücksichtigt. Bitte beachten Sie, dass ActionScript andere Datentypen ebenfalls in Zeichenketten konvertiert. In diesem Fall ist beispielsweise 20 größer oder gleich 100, da ActionScript den Vergleich »20« größer oder gleich »100« durchführt. |
|
|
8.4.9 == (gleich)
 
Der Operator == überprüft, ob ein Ausdruck gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zahlen zur Verfügung. Seit dem Flash Player 5 können Sie diesen Operator für alle Datentypen einsetzen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 4-Formates vergleichen müssen, dann wählen Sie den eq-Operator. |
|
|
|
Syntax: |
ausdruck == ausdruck
|
Parameter: |
|
Die Ausdrücke stehen im Flash 4 Player für Zahlen. Seit Flash 5 sind beliebige Datentypen erlaubt. |
|
|
|
Ergebnis: |
|
Sollte der erste Ausdruck gleich dem zweiten sein, dann ist das Ergebnis true, andernfalls false. Abhängig vom Datentyp vergleicht Flash die Ausdrücke in der folgenden Art: |
|
|
Zahlen und Wahrheitswerte vergleicht ActionScript abhängig von ihrem nummerischen Wert.
Zeichenketten sind gleich, wenn sie die gleichen Zeichen in derselben Reihenfolge enthalten.
Bezeichner mit Objekten sind gleich, wenn sie auf das gleiche Objekt zeigen (Referenzdatentyp). Dies schließt Funktionen und Movieclips mit ein.
|
Beispiel: |
// Primitive Datentypen
trace(1 == true); // Ergebnis true, da true entspricht 1
trace(0 == false); // Ergebnis true, da false entspricht 0
trace("Sascha" == "Sascha"); // Ergebnis true
trace("wolter" == "Wolter"); // Ergebnis false, da teilweise Großschreibung
// Komplexe Datentypen
a=new Object();
b=a;
trace(a==b); // Ergebnis true
a=new Object();
b=new Object();
trace(a==b); // Ergebnis false
8.4.10 != (ungleich)
 
Der Operator != überprüft, ob ein Ausdruck ungleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zahlen zur Verfügung. Seit dem Flash Player 5 können Sie diesen Operator für alle Datentypen einsetzen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 4-Formates vergleichen müssen, dann wählen Sie den ne-Operator. |
|
|
|
Syntax: |
ausdruck != ausdruck
|
Parameter: |
|
Die Ausdrücke stehen im Flash 4 Player für Zahlen. Seit Flash 5 sind beliebige Datentypen erlaubt. |
|
|
|
Ergebnis: |
|
Sollte der erste Ausdruck ungleich dem zweiten sein, dann ist das Ergebnis true, andernfalls false. Abhängig vom Datentyp vergleicht Flash die Ausdrücke in der folgenden Art: |
|
|
Zahlen und Wahrheitswerte vergleicht ActionScript abhängig von ihrem nummerischen Wert.
Zeichenketten sind ungleich, wenn sie nicht die gleichen Zeichen in derselben Reihenfolge enthalten.
Bezeichner mit Objekten sind ungleich, wenn sie nicht auf das gleiche Objekt zeigen (Referenzdatentyp). Dies schließt Funktionen und Movieclips mit ein.
8.4.11 === (striktes Gleich)
 
Der Operator === überprüft, ob ein Ausdruck vom Wert und vom Datentyp gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 6 zur Verfügung. |
|
|
|
Syntax: |
ausdruck === ausdruck
|
Parameter: |
Es sind beliebige Datentypen erlaubt.
|
Ergebnis: |
|
Sollte der erste Ausdruck gleich dem zweiten sein, dann ist das Ergebnis true, andernfalls false. Zwei Ausdrücke sind strikt gleich, wenn Sie vom gleichen Datentyp und die Werte gleich sind. Abhängig vom Datentyp vergleicht Flash die Ausdrücke in der folgenden Art: |
|
|
Zahlen und Wahrheitswerte vergleicht ActionScript abhängig von ihrem nummerischen Wert.
Zeichenketten sind gleich, wenn sie die gleichen Zeichen in derselben Reihenfolge enthalten.
Bezeichner mit Objekten sind gleich, wenn sie auf das gleiche Objekt zeigen (Referenzdatentyp). Dies schließt Funktionen und Movieclips mit ein.
|
Beispiel: |
// Strikte Gleichheit
trace(1 == true); // Ergebnis true, da true entspricht nach impliziter Typkonvertierung 1
trace(1 === true); // Ergebnis false, da Typ unabhängig vom Wert unterschiedlich
8.4.12 !== (striktes Ungleich)
 
Der Operator !== überprüft, ob ein Ausdruck vom Wert und vom Datentyp ungleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 6 zur Verfügung. |
|
|
|
Syntax: |
ausdruck !== ausdruck
|
Parameter: |
Es sind beliebige Datentypen erlaubt.
|
Ergebnis: |
|
Sollte der erste Ausdruck ungleich dem zweiten sein, dann ist das Ergebnis true, andernfalls false. Zwei Ausdrücke sind strikt ungleich, wenn Sie von unterschiedlichem Datentyp oder die Werte ungleich sind. Abhängig vom Datentyp vergleicht Flash die Ausdrücke in der folgenden Art: |
|
|
Zahlen und Wahrheitswerte vergleicht ActionScript abhängig von ihrem nummerischen Wert.
Zeichenketten sind ungleich, wenn sie nicht die gleichen Zeichen in derselben Reihenfolge enthalten.
Bezeichner mit Objekten sind ungleich, wenn sie nicht auf das gleiche Objekt zeigen (Referenzdatentyp). Dies schließt Funktionen und Movieclips mit ein.
|
Beispiel: |
// Überprüfe, ob das Ergebnis vom Server null ist (und auch diesen Typ hat)
if (serverantwort !== null) {
trace(serverantwort);
} else {
// tue nichts
}
8.4.13 eq (gleich für Strings in Flash 4)
 
Der Operator eq (equal) überprüft, ob ein Ausdruck gleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zeichenketten zur Verfügung und wird nicht mehr empfohlen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 5-Formates oder höher vergleichen wollen, dann wählen Sie den ==-Operator. |
|
|
|
Syntax: |
ausdruck eq ausdruck
|
Parameter: |
Die Ausdrücke stehen für Zeichenketten.
|
Ergebnis: |
|
Sollte die erste Zeichenkette gleich der zweiten sein, dann ist das Ergebnis true, andernfalls false. Die Groß- und Kleinschreibung wird berücksichtigt. |
|
|
8.4.14 ne (ungleich für Strings in Flash 4)
 
Der Operator ne (not equal) überprüft, ob ein Ausdruck ungleich einem anderen Ausdruck ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 4 für Zeichenketten zur Verfügung und wird nicht mehr empfohlen. Sollten Sie Zeichenketten in Anwendungen des Flash Player 5-Formates oder höher vergleichen wollen, dann wählen Sie den !=-Operator. |
|
|
|
Syntax: |
ausdruck ne ausdruck
|
Parameter: |
Die Ausdrücke stehen für Zeichenketten.
|
Ergebnis: |
|
Sollte die erste Zeichenkette ungleich der zweiten sein, dann ist das Ergebnis true, andernfalls false. Die Groß- und Kleinschreibung wird berücksichtigt. |
|
|
8.4.15 instanceof (Instanz von Prototyp)
 
Der Operator instanceof überprüft, ob eine Instanz das Vorkommen eines Objektes (Klasse) ist.
|
Bemerkung: |
|
Dieser Operator steht seit dem Flash Player 6 zur Verfügung. |
|
|
|
Syntax: |
ausdruck instanceof ausdruck
|
Parameter: |
Die Ausdrücke stehen für Objekte.
|
Ergebnis: |
|
Wenn der erste Ausdruck eine Instanz des zweiten Ausdrucks (Klasse) ist, dann ist das Ergebnis true. Andernfalls ist es false. Dabei untersucht ActionScript die gesamte Prototypenkette des zweiten Ausdrucks. |
|
|
|
Beispiel: |
|
Das folgende Beispiel überprüft, ob die Instanz zur Sound-Klasse zählt: |
|
|
// Erzeuge Instanz
meinSound = new Sound();
// Überprüfe
trace(meinSound instanceof Sound); // true
trace(meinSound instanceof Object); // true, da in der
Prototypenkette
trace(meinSound instanceof MovieClip); // false, da nicht in der Prototypen-Kette
// Alternative (Flash 5)
function instof (instanz, objekt){
while ((instanz = instanz.__proto__) != null) {
if (instanz == objekt.prototype) {
return true;
}
}
return false;
}
trace(instof(meinSound , Sound)); // true
trace(instof(meinSound , Object)); // true, da in der
Prototypen-Kette
trace(instof(meinSound , MovieClip)); // false, da nicht in der Prototypen-Kette
// Alternative ohne Prototypen-Kette (Flash 5 und 6)
function directinstanceof (instanz, objekt){
return instanz.__proto__ == objekt.prototype;
}
trace(directinstanceof(meinSound , Sound)); // true
trace(directinstanceof(meinSound , Object)); // false
trace(directinstanceof(meinSound , MovieClip)); // false
8.4.16 in (Eigenschaft von Instanz)
 
Der Operator in überprüft, ob eine Eigenschaft zu einem Objekt gehört. Dieser Operator steht seit dem Flash Player 5 ausschließlich für for-Schleifen zur Verfügung (siehe »for-in-schleife«, Seite 268).
|