= NN 2 IE 3 ECMA 1  

  

Der Zuweisungsoperator ordnet den ausgewerteten Wert des rechten Operanden der Variablen auf der linken Seite zu. Nach diesem Vorgang enthält die Variable Daten, die denselben Datentyp aufweisen wie der ursprüngliche Wert. Es ist auch möglich, Zuweisungsoperationen zu verketten. Dabei erfolgt die Auswertung der gesamten Anweisung von rechts nach links. Daher entsprechen nach dem folgenden Ausdruck:

a = b = c = 25;

alle drei Variablen 25.

 
Beispiel
 
var myName = "Theodore Roosevelt";
var now = new Date( );
& NN 2 IE 3 ECMA 1  

  

Der bitweise AND-Operator führt eine binäre mathematische Operation für zwei Operanden (bzw. ihre binären Werte) aus. Jede Bit-Spalte wird einer Booleschen AND-Operation unterzogen. Wenn der Wert einer Spalte in beiden Operanden 1 ist, ist das Ergebnis für diese Spaltenposition 1. Alle anderen Kombinationen ergeben Null. Der daraus resultierende Wert des Operators ist das dezimale Äquivalent des binären Ergebnisses. Die binären Werte von 3 und 6 sind z. B. 0011 bzw. 0110. Nachdem eine AND-Operation für diese beiden Werte ausgeführt wurde, ist das binäre Ergebnis 0010, und das Dezimaläquivalent lautet 2.

 
Beispiel
 
var n = 3 & 6;
<< NN 2 IE 3 ECMA 1  

  

Der Nach-links-Operator verschiebt die Bits des ersten Operanden um die Anzahl von Spalten, die im zweiten Operanden angegeben ist. Wenn z. B. die Bits des binären Wertes von 3 (0011) um 2 nach links verschoben werden, ist das binäre Ergebnis 1100, und das Dezimaläquivalent ist 12.

 
Beispiel
 
var shifted = 3 << 2;
~ NN 2 IE 3 ECMA 1  

  

Dies ist der bitweise NOT-Operator. Dieser unitäre Operator kehrt den Wert der Binärziffer in jeder Spalte einer Zahl um. Der binäre Wert von 6 ist z. B. 0110 (mit vielen weiteren Nullen, die auf der linken Seite abgeschnitten wurden). Nach dem Negieren der Werte aller Spalten lautet das binäre Ergebnis 1001 zuzüglich aller Nullen auf der linken Seite, die in 1 umgewandelt werden. Das Dezimaläquivalent ist ein negativer Wert (-5)

 
Beispiel
 
var n = ~6;
| NN 2 IE 3 ECMA 1  

  

Der bitweise OR-Operator führt eine binäre mathematische Operation für zwei Operanden (bzw. ihre binären Werte) aus. Jede Bit-Spalte wird der Booleschen OR-Operation unterzogen. Wenn der Wert einer Spalte in beiden Operanden 0 ist, lautet das Ergebnis für diese Spaltenposition 0. Alle anderen Kombinationen ergeben 1. Der für den Operator resultierende Wert ist das Dezimaläquivalent des binären Ergebnisses. Die binären Werte von 3 und 6 sind z. B. 0011 bzw. 0110. Nachdem eine OR-Operation für diese beiden Werte ausgeführt wurde, ist das binäre Ergebnis 0111, und das Dezimaläquivalent lautet 7.

 
Beispiel
 
var n = 3 | 6;
>> NN 2 IE 3 ECMA 1  

  

Der bitweise Nach-rechts-Operator verschiebt die Bits des ersten Operanden um die Anzahl von Spalten, die im zweiten Operanden angegeben ist. Wenn z. B. die Bits des binären Wertes von 6 (0110) um 2 nach rechts verschoben werden, ist das binäre Ergebnis 0001, und das Dezimaläquivalent ist 1. Alle Stellen, die rechts von der Zahl wegfallen, werden ignoriert.

 
Beispiel
 
var shifted = 6 >> 2;
^ NN 2 IE 3 ECMA 1  

  

Der bitweise XOR-Operator (exklusives OR) führt eine binäre mathematische Operation für zwei Operanden (bzw. ihre binären Werte) aus. Jede Bit-Spalte wird der Booleschen XOR-Operation unterzogen. Wenn der Wert einer Spalte in einem Operand (nicht in beiden) 1 ist, lautet das Ergebnis für diese Spaltenposition 1. Alle anderen Kombinationen ergeben 0. Der für den Operator resultierende Wert ist das Dezimaläquivalent des binären Ergebnisses. Die binären Werte von 3 und 6 sind z. B. 0011 bzw. 0110. Nachdem eine XOR-Operation für diese beiden Werte ausgeführt wurde, ist das binäre Ergebnis 0101, und das Dezimaläquivalent lautet 5.

 
Beispiel
 
var n = 3 ^ 6;
>>> NN 2 IE 3 ECMA 1  

  

Dies ist der bitweise Nach-rechts-mit-Nullen-Operator. Dieser Operator verschiebt die Bits des ersten Operanden um die Anzahl von Spalten (nach rechts), die im zweiten Operanden angegeben ist. Beim bitweisen Rechtsshift-Operator (>>) ist jede neue, von links eingefügte Ziffer eine Eins (1); beim Null-Rechtsshift-Operator (>>>) ist jede neue, von links eingefügte Ziffer eine Null (0). Alle Stellen, die auf der rechten Seite der Zahl wegfallen, werden ignoriert. Microsoft bezeichnet diesen Operator aus als "Nach-rechts-verschieben-Operator ohne Vorzeichen".

 
Beispiel
 
var shifted = 6 >>> 2;
, NN 2 IE 3 ECMA 1  

  

Der Komma-Operator (mit oder ohne optionalem nachgestellten Leerzeichen) dient zum Begrenzen von Ausdrücken, die in derselben Skriptzeile stehen. Es gibt zahlreiche Verwendungsmöglichkeiten für diesen Operator. Zum Deklarieren von mehreren Variablen lautet die Syntax z. B. wie folgt:

var varName1, varName2, ... varNameN;

Es ist auch möglich, mehrere Skriptanweisungen in einer Zeile zu verbinden. Daher werden durch die folgende Skriptzeile:

alert("Howdy"), alert("Doody");

nacheinander zwei Warndialogfelder dargestellt (das zweite wird angezeigt, nachdem das erste vom Benutzer geschlossen wurde). Der Operator kann außerdem in for-Schleifen verwendet werden, wenn die Schleife zwei (oder mehrere) Variablen enthalten sollen:

for (var i = 0, var j = 2; i< 20; i++, j++) {
    ...
} 
 
Beispiel
 
var isCSS, isIEMac;
//, /*...*/ NN 2 IE 3 ECMA 1  

  

Mithilfe dieser Kommentaranweisungen können Sie Text in ein Skript einfügen, der nicht ausgeführt wird. Text hinter dem Symbol // an einer beliebigen Stelle in einer Anweisungszeile wird vom Sprachinterpreter ignoriert. Vom Browser wird dann die nächste Zeile im Skript ausgeführt, es sei denn, ihr steht wieder das Symbol // voran.

 

Bei mehrzeiligen Kommentaren können Sie den Block mit dem Symbol /* beginnen. Der Kommentar kann sich jetzt über beliebig viele Zeilen erstrecken. Der Block wird mit dem Symbol */ beendet. Danach führt der Browser wieder Anweisungen aus.

 
Beispiel
 
// convert temp from C to F

/*
many lines
of
comments
*/
//, /*...*/ NN 2 IE 3 ECMA 1  

  

Mithilfe dieser Kommentaranweisungen können Sie Text in ein Skript einfügen, der nicht ausgeführt wird. Text hinter dem Symbol // an einer beliebigen Stelle in einer Anweisungszeile wird vom Sprachinterpreter ignoriert. Vom Browser wird dann die nächste Zeile im Skript ausgeführt, es sei denn, ihr steht wieder das Symbol // voran.

 

Bei mehrzeiligen Kommentaren können Sie den Block mit dem Symbol /* beginnen. Der Kommentar kann sich jetzt über beliebig viele Zeilen erstrecken. Der Block wird mit dem Symbol */ beendet. Danach führt der Browser wieder Anweisungen aus.

 
Beispiel
 
// convert temp from C to F

/*
many lines
of
comments
*/
@cc_on, @if, @end, @set NN n/a IE 4(Win) ECMA n/a  

  

In IE für Windows gibt es ein Skriptmerkmal namens bedingte Kompilierung. Dieser Modus wird mithilfe der Anweisung @cc_on aktiviert und ermöglicht die Ausführung von JScript-Anweisungen unter Bedingungen, die innerhalb dieser bedingten Umgebung getestet werden können. Wenn Sie eine bedingte Kompilierungsanweisung in JavaScript-Kommentare einschließen, wird sie nur in IE für Windows ab Version 4 ausgeführt und gerät anderen Browsern nicht in die Quere.

 

Die "Bedingtheit" dieser Anweisung stammt von verschiedenen globalen Eigenschaften (mit vorangestelltem @-Symbol), die Umgebungseigenschaften wie die Version der Skriptengine, das Betriebssystem und den CPU-Typ offen legen. Alle diese Informationen können in den meisten Browsern aus den Eigenschaften des navigator-Objekts abgerufen werden und stehen daher nicht ausschließlich in dieser bedingten Umgebung zur Verfügung.

 

Zum Aktivieren der bedingten Kompilierung fügen Sie die folgende Anweisung in Ihr Skript ein:

/*@cc_on @*/
 

Hierbei handelt es sich um einen Einwegschalter: Einmal aktiviert, lässt sich der Modus in der aktuellen Seite nicht wieder deaktivieren.

 

Das folgende Fragment zeigt, wie die @if-Anweisung und ähnliche Anweisungen Umgebungsinformationen in der Statusleiste des Fensters anzeigen, wenn der Browser mit JScript ab Version 5.6 arbeitet (IE ab Version 6):

/*@cc_on @*/
/*@if (@_jscript_version>= 5.6 && @_x86)
    status = "Now running JScript version " + @_jscript_version + 
    " with Intel inside.";
   @else @*/
    status = "Have a nice day.";
/*@end @*/ 
 

Mit der Anweisung @set können Sie einer Variablen (mit dem Präfix @) innerhalb eines bedingten Kompilierungsabschnitts einen numerischen oder Booleschen Wert (keine Strings) zuweisen.

@set @isOK = @_win32
 

Nach dem Initialisieren kann diese Variable (einschließlich ihres ansonsten unzulässigen Bezeichners) in Skriptanweisungen überall in der Seite eingesetzt werden. Beachten Sie, dass die an Visual Basic angelehnte Syntax von @-Anweisungen in bedingten Kompilierungsanweisungen keinen abschließenden Strichpunkt zulässt.

 

Auf der einen Seite könnte die bedingte Kompilierung bei der Anwendungsentwicklung für IE hilfreich sein, um ältere IE-Versionen vor neuen Sprachfunktionen (z. B. try-catch-Konstruktionen) abzuschirmen, die zu Kompilierungsfehlern führen würden, weil sich die entsprechenden Anweisungen nur unter ganz bestimmten Versionen kompilieren lassen. Ein Entwickler, der für verschiedene Browsertypen arbeitet, dürfte diese Funktion bestenfalls beim Debuggen IE-spezifischer Probleme verwenden können; für die eigentliche Anwendungsentwicklung hingegen ist sie uninteressant.

 
Beispiel

Siehe oben stehende Beschreibung.

@cc_on, @if, @end, @set NN n/a IE 4(Win) ECMA n/a  

  

In IE für Windows gibt es ein Skriptmerkmal namens bedingte Kompilierung. Dieser Modus wird mithilfe der Anweisung @cc_on aktiviert und ermöglicht die Ausführung von JScript-Anweisungen unter Bedingungen, die innerhalb dieser bedingten Umgebung getestet werden können. Wenn Sie eine bedingte Kompilierungsanweisung in JavaScript-Kommentare einschließen, wird sie nur in IE für Windows ab Version 4 ausgeführt und gerät anderen Browsern nicht in die Quere.

 

Die "Bedingtheit" dieser Anweisung stammt von verschiedenen globalen Eigenschaften (mit vorangestelltem @-Symbol), die Umgebungseigenschaften wie die Version der Skriptengine, das Betriebssystem und den CPU-Typ offen legen. Alle diese Informationen können in den meisten Browsern aus den Eigenschaften des navigator-Objekts abgerufen werden und stehen daher nicht ausschließlich in dieser bedingten Umgebung zur Verfügung.

 

Zum Aktivieren der bedingten Kompilierung fügen Sie die folgende Anweisung in Ihr Skript ein:

/*@cc_on @*/
 

Hierbei handelt es sich um einen Einwegschalter: Einmal aktiviert, lässt sich der Modus in der aktuellen Seite nicht wieder deaktivieren.

 

Das folgende Fragment zeigt, wie die @if-Anweisung und ähnliche Anweisungen Umgebungsinformationen in der Statusleiste des Fensters anzeigen, wenn der Browser mit JScript ab Version 5.6 arbeitet (IE ab Version 6):

/*@cc_on @*/
/*@if (@_jscript_version>= 5.6 && @_x86)
    status = "Now running JScript version " + @_jscript_version + 
    " with Intel inside.";
   @else @*/
    status = "Have a nice day.";
/*@end @*/ 
 

Mit der Anweisung @set können Sie einer Variablen (mit dem Präfix @) innerhalb eines bedingten Kompilierungsabschnitts einen numerischen oder Booleschen Wert (keine Strings) zuweisen.

@set @isOK = @_win32
 

Nach dem Initialisieren kann diese Variable (einschließlich ihres ansonsten unzulässigen Bezeichners) in Skriptanweisungen überall in der Seite eingesetzt werden. Beachten Sie, dass die an Visual Basic angelehnte Syntax von @-Anweisungen in bedingten Kompilierungsanweisungen keinen abschließenden Strichpunkt zulässt.

 

Auf der einen Seite könnte die bedingte Kompilierung bei der Anwendungsentwicklung für IE hilfreich sein, um ältere IE-Versionen vor neuen Sprachfunktionen (z. B. try-catch-Konstruktionen) abzuschirmen, die zu Kompilierungsfehlern führen würden, weil sich die entsprechenden Anweisungen nur unter ganz bestimmten Versionen kompilieren lassen. Ein Entwickler, der für verschiedene Browsertypen arbeitet, dürfte diese Funktion bestenfalls beim Debuggen IE-spezifischer Probleme verwenden können; für die eigentliche Anwendungsentwicklung hingegen ist sie uninteressant.

 
Beispiel

Siehe oben stehende Beschreibung.

@cc_on, @if, @end, @set NN n/a IE 4(Win) ECMA n/a  

  

In IE für Windows gibt es ein Skriptmerkmal namens bedingte Kompilierung. Dieser Modus wird mithilfe der Anweisung @cc_on aktiviert und ermöglicht die Ausführung von JScript-Anweisungen unter Bedingungen, die innerhalb dieser bedingten Umgebung getestet werden können. Wenn Sie eine bedingte Kompilierungsanweisung in JavaScript-Kommentare einschließen, wird sie nur in IE für Windows ab Version 4 ausgeführt und gerät anderen Browsern nicht in die Quere.

 

Die "Bedingtheit" dieser Anweisung stammt von verschiedenen globalen Eigenschaften (mit vorangestelltem @-Symbol), die Umgebungseigenschaften wie die Version der Skriptengine, das Betriebssystem und den CPU-Typ offen legen. Alle diese Informationen können in den meisten Browsern aus den Eigenschaften des navigator-Objekts abgerufen werden und stehen daher nicht ausschließlich in dieser bedingten Umgebung zur Verfügung.

 

Zum Aktivieren der bedingten Kompilierung fügen Sie die folgende Anweisung in Ihr Skript ein:

/*@cc_on @*/
 

Hierbei handelt es sich um einen Einwegschalter: Einmal aktiviert, lässt sich der Modus in der aktuellen Seite nicht wieder deaktivieren.

 

Das folgende Fragment zeigt, wie die @if-Anweisung und ähnliche Anweisungen Umgebungsinformationen in der Statusleiste des Fensters anzeigen, wenn der Browser mit JScript ab Version 5.6 arbeitet (IE ab Version 6):

/*@cc_on @*/
/*@if (@_jscript_version>= 5.6 && @_x86)
    status = "Now running JScript version " + @_jscript_version + 
    " with Intel inside.";
   @else @*/
    status = "Have a nice day.";
/*@end @*/ 
 

Mit der Anweisung @set können Sie einer Variablen (mit dem Präfix @) innerhalb eines bedingten Kompilierungsabschnitts einen numerischen oder Booleschen Wert (keine Strings) zuweisen.

@set @isOK = @_win32
 

Nach dem Initialisieren kann diese Variable (einschließlich ihres ansonsten unzulässigen Bezeichners) in Skriptanweisungen überall in der Seite eingesetzt werden. Beachten Sie, dass die an Visual Basic angelehnte Syntax von @-Anweisungen in bedingten Kompilierungsanweisungen keinen abschließenden Strichpunkt zulässt.

 

Auf der einen Seite könnte die bedingte Kompilierung bei der Anwendungsentwicklung für IE hilfreich sein, um ältere IE-Versionen vor neuen Sprachfunktionen (z. B. try-catch-Konstruktionen) abzuschirmen, die zu Kompilierungsfehlern führen würden, weil sich die entsprechenden Anweisungen nur unter ganz bestimmten Versionen kompilieren lassen. Ein Entwickler, der für verschiedene Browsertypen arbeitet, dürfte diese Funktion bestenfalls beim Debuggen IE-spezifischer Probleme verwenden können; für die eigentliche Anwendungsentwicklung hingegen ist sie uninteressant.

 
Beispiel

Siehe oben stehende Beschreibung.

@cc_on, @if, @end, @set NN n/a IE 4(Win) ECMA n/a  

  

In IE für Windows gibt es ein Skriptmerkmal namens bedingte Kompilierung. Dieser Modus wird mithilfe der Anweisung @cc_on aktiviert und ermöglicht die Ausführung von JScript-Anweisungen unter Bedingungen, die innerhalb dieser bedingten Umgebung getestet werden können. Wenn Sie eine bedingte Kompilierungsanweisung in JavaScript-Kommentare einschließen, wird sie nur in IE für Windows ab Version 4 ausgeführt und gerät anderen Browsern nicht in die Quere.

 

Die "Bedingtheit" dieser Anweisung stammt von verschiedenen globalen Eigenschaften (mit vorangestelltem @-Symbol), die Umgebungseigenschaften wie die Version der Skriptengine, das Betriebssystem und den CPU-Typ offen legen. Alle diese Informationen können in den meisten Browsern aus den Eigenschaften des navigator-Objekts abgerufen werden und stehen daher nicht ausschließlich in dieser bedingten Umgebung zur Verfügung.

 

Zum Aktivieren der bedingten Kompilierung fügen Sie die folgende Anweisung in Ihr Skript ein:

/*@cc_on @*/
 

Hierbei handelt es sich um einen Einwegschalter: Einmal aktiviert, lässt sich der Modus in der aktuellen Seite nicht wieder deaktivieren.

 

Das folgende Fragment zeigt, wie die @if-Anweisung und ähnliche Anweisungen Umgebungsinformationen in der Statusleiste des Fensters anzeigen, wenn der Browser mit JScript ab Version 5.6 arbeitet (IE ab Version 6):

/*@cc_on @*/
/*@if (@_jscript_version>= 5.6 && @_x86)
    status = "Now running JScript version " + @_jscript_version + 
    " with Intel inside.";
   @else @*/
    status = "Have a nice day.";
/*@end @*/ 
 

Mit der Anweisung @set können Sie einer Variablen (mit dem Präfix @) innerhalb eines bedingten Kompilierungsabschnitts einen numerischen oder Booleschen Wert (keine Strings) zuweisen.

@set @isOK = @_win32
 

Nach dem Initialisieren kann diese Variable (einschließlich ihres ansonsten unzulässigen Bezeichners) in Skriptanweisungen überall in der Seite eingesetzt werden. Beachten Sie, dass die an Visual Basic angelehnte Syntax von @-Anweisungen in bedingten Kompilierungsanweisungen keinen abschließenden Strichpunkt zulässt.

 

Auf der einen Seite könnte die bedingte Kompilierung bei der Anwendungsentwicklung für IE hilfreich sein, um ältere IE-Versionen vor neuen Sprachfunktionen (z. B. try-catch-Konstruktionen) abzuschirmen, die zu Kompilierungsfehlern führen würden, weil sich die entsprechenden Anweisungen nur unter ganz bestimmten Versionen kompilieren lassen. Ein Entwickler, der für verschiedene Browsertypen arbeitet, dürfte diese Funktion bestenfalls beim Debuggen IE-spezifischer Probleme verwenden können; für die eigentliche Anwendungsentwicklung hingegen ist sie uninteressant.

 
Beispiel

Siehe oben stehende Beschreibung.

?: NN 2 IE 3 ECMA 1  

  

Der Bedingungsoperator stellt eine verkürzte Syntax für eine if/else-Steuerungsstruktur bereit. Für die Verwendung dieses Operators sind drei Komponenten erforderlich: eine Bedingung und zwei Anweisungen. Ergibt die Bedingung true, wird die erste Anweisung ausgeführt, ergibt sie false, die zweite. Die Syntax lautet wie folgt:

condition ? statement1 : statement2
 

Sie können diese Operatoren verschachteln, um mehrere Entscheidungspfade innerhalb einer einzelnen Anweisung bereitzustellen. Im folgenden Syntaxbeispiel wird, wenn die Bedingung conditionA den Wert false ergibt, die Bedingung conditionB ausgewertet und je nachdem Ergebnis von conditionB als Wert des gesamten Ausdrucks entweder statement2 oder statement3 zurückgegeben.

 

Dieser Operator ist nur hinsichtlich seiner Darstellung eine Kurzform. Er ruft dieselben internen Verarbeitungsschritte wie eine if...else-Konstruktion auf.

 
Beispiel
 
var newColor = (temp > 100) ? "red" : "blue";
continue NN 2 IE 3 ECMA 1  

  

Stoppt die Ausführung der aktuellen Iteration durch die Schleife und kehrt zum Anfang der Schleife zurück, um einen neuen Durchlauf auszuführen (der update-Ausdruck wird ausgeführt, wenn er in der for-Schleife angegeben ist). Wenn Sie eine verschachtelte Schleife verwenden, weisen Sie jeder verschachtelten Ebene eine Beschriftung zu, und verwenden die gewünschte Beschriftung dann als Parameter für die Anweisung continue. Weitere Informationen finden Sie unter der Anweisung label (ab Navigator 4 und Internet Explorer 4).

 
Beispiel
 
outerLoop:
for (var i = 0; i <= maxValue1; i++) {
    for (var j = 0; j <= maxValue2; j++) {
        if (j*i == magic2) {
            continue outerLoop;
        }
    }
}
/char NN 2 IE 3 ECMA 1  

  

JavaScript stellt einen Mechanismus bereit, der das Einfügen von allgemeinen Leerraumzeichen (manchmal auch Whitespace-Zeichen oder Steuercodes genannt) und Symbolen, die sonst zu Konflikten mit der Stringdarstellung führen, in Strings ermöglicht. Der Schlüssel besteht aus einem umgekehrten Schrägstrich (\) und einem nachfolgenden einzelnen Zeichen mit einer bestimmten Bedeutung. In der folgenden Tabelle finden Sie eine Übersicht über die erkannten Escape-Zeichen und ihre Bedeutung.

 

Diese Zeichen erleichtern das Erstellen von Text für Warn-, Bestätigungs- und Eingabedialogfelder. Wenn Sie beispielsweise in einem Warndialogfeld mehrere Absätze anzeigen möchten, die jeweils durch eine Leerzeile getrennt sind, fügen Sie am Absatzende Zeilenvorschubzeichen (LF-Zeichen) ein:

alert("First paragraph.\n\nSecond paragraph.")
 

Beachten Sie, dass diese Zeichen nur in Strings anwendbar sind und keinen Einfluss auf die Formatierung von HTML-Inhalten mit Wagenrückläufen (CR-Zeichen) haben.

 
Escape-Sequenz Beschreibung
\b Rückschritt
\t Horizontaler Tabulator
\n Zeilenvorschub (Line Feed, LF bzw. New Line, NL)
\v Vertikaler Tabulator
\f Formularvorschub (Form Feed, FF)
\r Wagenrücklauf (Carriage Return, CR)
\" Doppeltes Anführungszeichen (")
\' Einfaches Anführungszeichen (')
\\ Backslash
NN 2 IE 3 ECMA 1  

  

Der unitäre Dekrementierungsoperator subtrahiert 1 vom aktuellen Wert eines variablen Ausdrucks. Sie können den Operator vor oder hinter der Variablen platzieren, um eine unterschiedliche Wirkung zu erzielen. Steht der Operator vor der Variablen, wird diese vermindert, bevor sie in der aktuellen Anweisung ausgewertet wird. In der folgenden Sequenz:

var a, b;
a = 5;
b = --a;
 

wird z. B. von a 1 subtrahiert, bevor a b zugeordnet wird. Daher sind sowohl b als auch a nach der Ausführung dieser Anweisungen 4. In der folgenden Sequenz:

var a, b;
a = 5;
b = a--;
 

erfolgt die Subtraktion allerdings erst, nachdem a b zugeordnet wurde. Nachdem Ausführung der Anweisungen ist b gleich 5 und a gleich 4.

 

Dieses Verhalten wirkt sich darauf aus, wie zählende Variablen in for-Schleifen definiert und verwendet werden. Normalerweise vermindert ein Schleifenzähler, der von einem maximalen Wert rückwärts zählt, den Zähler, nachdem die Anweisungen in der Schleife ausgeführt wurden. Daher wird der Operator in den meisten Schleifenzählern hinter der Zählervariablen platziert:

for (var i = 10; i>=0; i--) {...} 
 
Beispiel
 
--n
n--
delete NN 4 IE 4 ECMA 1  

  

Der delete-Operator entfernt eine Eigenschaft aus einem Objekt (z. B. eine Prototypeigenschaft aus einer Objektinstanz, deren statischem Objekt der Prototyp an einer früheren Stelle im Skript hinzugefügt wurde) oder ein Element aus einem durch ein Skript erstellten Array. Beim Entfernen eines Eintrags aus einem Array werden weder die Länge des Arrays noch die numerischen Indizes der verbleibenden Einträge geändert, sondern lediglich der Wert des gelöschten Elements auf undefined gesetzt. Der delete-Operator ist kein Werkzeug zur Speicherverwaltung.

 
Beispiel
 
delete myString.author;
/ NN 2 IE 3 ECMA 1  

  

Der Divisionsoperator dividiert die Zahl auf der linken durch die Zahl auf der rechten Seite. Beide Operanden müssen Zahlen sein. Das Ergebnis eines Ausdrucks mit diesem Operator ist eine Zahl.

 
Beispiel
 
var myQuotient = number1 / number2;
do/while NN 4 IE 4 ECMA 3  

  

Führt Anweisungen in einer Schleife aus, während eine Bedingung wahr ist. Da die Bedingung am Ende der Schleife getestet wird, werden die Anweisungen immer mindestens einmal ausgeführt. Natürlich muss sich für den Ausdruck, der die Bedingung bildet, ein Aspekt seines Wertes in den Anweisungen ändern. Andernfalls entsteht eine unendliche Schleife.

 
Beispiel
 
var i = 1;
do {
    window.status = "Loop number " + i++;
} while (i <= 10)
window.status = "";
== NN 2 IE 3 ECMA 1  

  

Der Gleichheitsoperator vergleicht zwei Operandenwerte und gibt ein Boolesches Ergebnis zurück. Das Verhalten dieses Operators hängt von der für das script-Element angegebenen JavaScript-Version ab. Wenn das language-Attribut auf JavaScript oder JavaScript1.1 gesetzt ist, werden einige Operanden, wie in der folgenden Tabelle dargestellt, automatisch konvertiert:

Linker Operand Rechter Operand Beschreibung
Objektreferenz. Objektreferenz. Vergleichende Auswertung von Objektreferenzen.
Beliebiger Datentyp Boolean Konvertieren einen Booleschen Operanden in eine Zahl (1 für true, 0 für false) und vergleichen ihn mit dem anderen Operanden.
Objektreferenz. String Konvertieren ein Objekt in einen String (mit toString( )) und führen einen Stringvergleich durch.
String Number Konvertieren einen String in eine Zahl und führen einen Vergleich numerischer Werte durch.
 

Navigator ab Version 4 gehorcht leicht veränderten Wertumwandlungsregeln zur Bestimmung der Gleichheit, wenn Sie im script-Element explizit language="JavaScript1.2" angeben. Der Browser geht bezüglich der Gleichheit getreu den Regeln vor, d. h. es werden keine automatischen Datenkonvertierungen durchgeführt. Während der folgende Ausdruck:

123 == "123"
 

aufgrund der automatischen Datentypkonvertierung in den meisten Fällen true ergibt, lautet das Ergebnis in Navigator ab Version 4 false. Dies ist jedoch nur bei Anweisungen in Skripts der Fall, für die explizit JavaScript 1.2 definiert wurde. Da neuere DOM- und XHTML-Standards keine Möglichkeit bieten, die Version der Skriptsprache anzugeben, sollten Sie solche Sonderfälle nach Möglichkeit vermeiden. Wenn in Ihren Skripts Tests auf absolute Gleichheit von Operanden erforderlich sind, verwenden Sie stattdessen den neueren Identitätsoperator (===). Für typische Wertgleichheitstests sind die standardmäßigen Gleichheitsoperatoren vollkommen ausreichend.

 

Wenn Sie die Werte von Objekten vergleichen möchten (z. B. Strings, die mit dem new String( )-Konstruktor explizit erstellt wurden), sollten Sie, unabhängig von der Version, die von Methoden wie toString( ) oder valueOf( ) abgeleiteten Werte vergleichen.

 
Beispiel
 
if (n == m) {
    ...
}
>= NN 2 IE 3 ECMA 1  

  

Der Größer-oder-gleich-Operator vergleicht die Werte der Operanden auf beiden Seiten des Operators. Ist der numerische Wert des linken Operanden größer oder gleich dem rechten Operanden, wird für den Ausdruck true zurückgegeben. Strings werden zum Vergleich dieser numerischen Werte in Unicode-Werte konvertiert.

 
Beispiel
 
if (a >= b) {
    ...
}
> NN 2 IE 3 ECMA 1  

  

Der Größer-als-Operator vergleicht die Werte der Operanden auf beiden Seiten des Operators. Ist der numerische Wert des linken Operanden größer als der rechte Operand, wird für den Ausdruck true zurückgegeben. Strings werden zum Vergleich in Unicode-Werte konvertiert.

 
Beispiel
 
if (a > b) {
    ...
}
if NN 2 IE 3 ECMA 1  

  

Dies ist eine einfache Bedingungsanweisung, die einen alternativen Ausführungspfad bereitstellt.

 
Beispiel
 
if (myDateObj.getMonth( ) == 1) {
    calcMonthLength( );
}
if/else NN 2 IE 3 ECMA 1  

  

Dies ist eine einfache Bedingungsanweisung, die zwei Ausführungspfade bereitstellt, die je nach dem Ergebnis der Bedingung ausgewählt werden. Sie können eine weitere if- oder if/else-Anweisung in einem der Pfade der if/else-Anweisung verwenden.

 
Beispiel
 
var theMonth = myDateObj.getMonth( );
if (theMonth == 1) {
    monLength = calcLeapMonthLength( );
} else {
    monLength = calcMonthLength(theMonth);
}
in NN 6 IE 5.5(Win) ECMA n/a  

  

Mithilfe des in-Operators lässt sich in einem Skript rasch feststellen, ob für ein Objekt eine bestimmte Eigenschaft oder Methode implementiert ist. Der linke Operand ist ein String, der den Namen der Eigenschaft oder Methode (ohne die Klammer) enthält, der rechte Operand ist eine Referenz auf das Objekt. Wenn Ihre Untersuchung DOM-Referenzen mit Punktnotierung erfordert, setzen Sie diese auf der Objektreferenzseite des Ausdrucks. In other words, instead of trying "style.filter" in document.body, use "filter" in document.body.style. Wenn er nicht in nur so wenigen Browsern implementiert wäre, könnte dieser künftige ECMA-Operator ein sehr hilfreiches Werkzeug bei der Objekterkennung sein.

 
Beispiel
 
if ("createDocument" in document.implementation) {
    // go ahead and use document.implementation.createDocument( )
}
++ NN 2 IE 3 ECMA 1  

  

Der unitäre Inkrementierungsoperator addiert 1 zum aktuellen Wert eines variablen Ausdrucks. Sie können den Operator vor oder hinter der Variablen platzieren, um eine unterschiedliche Wirkung zu erzielen. Steht der Operator vor der Variablen, wird diese erhöht, bevor sie in der aktuellen Anweisung ausgewertet wird. In der folgenden Sequenz:

var a, b;
a = 5;
b = ++a;
 

wird zu a 1 addiert, bevor a b zugeordnet wird. Daher sind sowohl b als auch a nach der Ausführung dieser Anweisungen 6. In der folgenden Sequenz:

var a, b;
a = 5;
b = a++;
 

erfolgt die Addition allerdings erst, nachdem a b zugeordnet wurde. Nach Ausführung dieser Anweisungen ist b gleich 5 und a gleich 6.

 

Dieses Verhalten wirkt sich darauf aus, wie zählende Variablen in for-Schleifen definiert und verwendet werden. Normalerweise erhöht ein Schleifenzähler, der von einem Mindestwert aus vorwärts zählt, den Zähler, nachdem die Anweisungen in der Schleife ausgeführt wurden. Daher wird der Operator in den meisten Schleifenzählern hinter der Zählervariablen platziert:

for (var i = 10; i>=0; i++) {...}
 
Beispiel
 
++n
		n++
!= NN 2 IE 3 ECMA 1  

  

Der Ungleichheitsoperator vergleicht zwei Operandenwerte und gibt ein Boolesches Ergebnis zurück. Das Verhalten dieses Operators hängt von der für das script-Element angegebenen JavaScript-Version ab. Wenn das language-Attribut auf JavaScript oder JavaScript1.1 gesetzt ist, werden einige Operanden wie beim Gleichheitsoperator (==) automatisch konvertiert. Bei Navigator ab Version 4 liegt der Fall ein wenig anders, wenn im script-Element language="JavaScript1.2" angegeben ist. Der Browser geht bezüglich der Ungleichheit getreu den Regeln vor, d. h. es werden keine automatischen Datenkonvertierungen durchgeführt. Während der folgende Ausdruck:

123 != "123"
 

aufgrund der automatischen Datentypkonvertierung in den meisten Fällen false ergibt, lautet das Ergebnis in Navigator ab Version 4 true. Dies ist jedoch nur bei Anweisungen in Skripts der Fall, für die explizit JavaScript 1.2 definiert wurde. Da neuere DOM- und XHTML-Standards keine Möglichkeit bieten, die Version der Skriptsprache anzugeben, sollten Sie solche Sonderfälle nach Möglichkeit vermeiden. Wenn in Ihren Skripts Tests auf absolute Ungleichheit von Operanden erforderlich sind, verwenden Sie stattdessen den neueren Nichtidentitätsoperator (!==). Für typische Wertungleichheitstests sind die standardmäßigen Ungleichheitsoperatoren vollkommen ausreichend.

 

Wenn Sie die Werte von Objekten vergleichen möchten (z. B. Strings, die mit dem new String( )-Konstruktor explizit erstellt wurden), sollten Sie, unabhängig von der Version, die von Methoden wie toString( ) oder valueOf( ) abgeleiteten Werte vergleichen.

 
Beispiel
 
if (n != m) {
    ...
}
instanceof NN 6 IE 5(Win) ECMA n/a  

  

Mithilfe des instanceof-Operators kann ein Skript feststellen, ob ein Objekt (der linke Operand) eine Instanz eines bekannten Objekts ist (oder von dem bekannten Objekt vererbt wurde). In gewisser Weise ähnelt dieser Operator dem typeof-Operator, doch statt eines breiten Objekttyps gibt ein Ausdruck mit dem instanceof-Operator einen Booleschen Wert zurück, der das Ergebnis der Suche nach einem spezielleren Objekttyp darstellt. Tatsächlich können Sie mit seiner Hilfe ein Objekt mit benutzerdefinierten Objekttypen und, in Netscape 6, mit W3C-DOM-Baumobjektprototypen vergleichen. Während der typeof-Operator bei einem Array object zurückgibt, können Sie mit ihm feststellen, ob ein Objekt speziell als ein Array instanziiert wurde:

myVar instanceof Array
 

Beachten Sie jedoch, dass, wenn der oben stehende Ausdruck true ergibt, dies ebenso für den folgenden Ausdruck gilt:

myVar instanceof Object
 

Ein Array ist ein Abkömmling des Root-Object-Objekts und somit zugleich eine Instanz dieses Root-Objekts.

 

In Netscape 6 kann es sich bei jedem der beiden Operanden auch um eine Referenz auf ein DOM-Prototypobjekt handeln. Daher handelt es sich bei dem folgenden Ausdruck in Netscape 6 um einen zulässigen und funktionsfähigen Ausdruck:

document.getElementById("widget") instanceof HTMLDivElement 
 
Beispiel
 
if (theVal instanceof Array) {
    // go ahead and treat theVal as an array
}
<= NN 2 IE 3 ECMA 1  

  

Der Kleiner-oder-gleich-Operator vergleicht die Werte der Operanden auf beiden Seiten des Operators. Ist der numerische Wert des linken Operanden kleiner oder gleich dem rechten Operanden, wird für den Ausdruck true zurückgegeben. Strings werden zum Vergleich dieser numerischen Werte in Unicode-Werte konvertiert.

 
Beispiel
 
if (a <= b) {
    ...
}
< NN 2 IE 3 ECMA 1  

  

Der Kleiner-als-Operator vergleicht die Werte der Operanden auf beiden Seiten des Operators. Ist der numerische Wert des linken Operanden kleiner als der rechte Operand, wird für den Ausdruck true zurückgegeben. Strings werden zum Vergleich in Unicode-Werte konvertiert.

 
Beispiel
 
if (a < b) {
    ...
}
% NN 2 IE 3 ECMA 1  

  

Der Modulusoperator dividiert die Zahl auf der linken durch die Zahl auf der rechten Seite des Operators. Ist nach der Division ein Teilungsrest vorhanden, ist dieser Rest (in Form eines Integers) das Ergebnis des Ausdrucks. Wenn kein Rest vorhanden ist, wird Null zurückgegeben. Beide Operanden müssen Zahlen sein. Das Ergebnis eines Ausdrucks mit diesem Operator ist eine Zahl. Auch wenn der Wert des Teilungsrestes für Sie nicht von Interesse ist, bietet dieser Operator eine schnelle Möglichkeit herauszufinden, ob zwei Werte glatt durcheinander dividiert werden können.

 
Beispiel
 
if ((dayCount % 7) > 0) {
    ...
}
* NN 2 IE 3 ECMA 1  

  

Der Multiplikationsoperator multipliziert die Zahl auf der linken mit der Zahl auf der rechten Seite des Operators. Beide Operanden müssen Zahlen sein. Das Ergebnis eines Ausdrucks mit diesem Operator ist eine Zahl.

 
Beispiel
 
var myProduct = number1 * number2;
- NN 2 IE 3 ECMA 1  

  

Dies ist der Negationsoperator. Dieser unitäre Operator negiert den Wert des einzigen Operanden. In den folgenden Anweisungen:

a = 5;
b = -a;
 

wird der Wert von b z. B. zu -5. Ein Negationsoperator, der auf einen negativen Wert angewendet wird, gibt einen positiven Wert zurück.

 
Beispiel
 
var myOpposite = -me;
new NN 2 IE 3 ECMA 1  

  

Der new-Operator erstellt Instanzen der folgenden statischen ECMA-Standardobjekte:

  • Array
  • Boolean
  • Date
  • Function
  • Number
  • Object
  • RegExp
  • String

Das Ergebnis eines Ausdrucks mit diesem Operator ist eine Instanz des jeweiligen Objekts. Mit anderen Worten, der Aufruf dieses Operators bewirkt, dass JavaScript nach einer Konstruktorfunktion sucht, die denselben Namen aufweist. Somit funktioniert der new-Operator auch bei benutzerdefinierten Objekten, die mithilfe von Konstruktorfunktionen erstellt wurden. In IE für Windows lassen sich mit diesem Operator auch proprietäre Objekte wie ActiveX- und VBArray-Objekte erstellen.

 

Gemäß den Syntaxregeln können statische Objekte, statische Objekte mit leeren Klammern und statische Objekte mit in Klammern gesetzten Parametern benannt werden.

var myArray = new Array;
var myArray = new Array( );
var myArray = new Array("Larry", "Moe", "Curly");
 

Es ist nur bei den letzten beiden Beispielen gewährleistet, dass sie in allen skriptfähigen Browserversionen funktionieren. Ordnen Sie beim Erstellen eines nativen Objekts keine Parameter zu, so besitzt die neue Instanz nur die Eigenschaften, die dem Prototyp des statischen Objekts zugeordnet wurden. Eine Ausnahme von dieser Regel ist das Date-Objekt.

 
Beispiel
 
var now = new Date( );
! NN 2 IE 3 ECMA 1  

  

Dies ist der NOT-Operator. Für diesen unitären Operator wird der negative Wert eines einzelnen Booleschen Operanden zurückgegeben. Der NOT-Operator sollte mit expliziten Booleschen Werten verwendet werden, z. B. dem Ergebnis eines Vergleichs oder einer Booleschen Eigenschaftseinstellung.

 
Beispiel
 
if (a == !b) {
    ...
}
|| NN 2 IE 3 ECMA 1  

  

Der OR-Operator überprüft, ob zwei Boolesche Ausdrücke gleich sind. Wenn für einen oder beide Ausdrücke true zurückgegeben wird, lautet das Ergebnis des ||-Operators true. Wenn beide Ausdrücke jeweils false ergeben, lautet das Ergebnis des ||-Operators ebenfalls false. Ein Boolescher Ausdruck kann aus einem Vergleichsausdruck (mit einem der zahlreichen Vergleichsoperatoren) oder einer Vielzahl anderer Werte bestehen. Eine Zusammenfassung der am häufigsten verwendeten Datentypen, Werte und dazugehörigen Booleschen Wertäquivalente finden Sie im Abschnitt zum AND-Operator.

 

Mithilfe des ||-Operators können Sie zusammengesetzte Bedingungen erstellen. Wenn Sie z. B. überprüfen möchten, ob von zwei Bedingungen eine oder beide zutreffen (true), erstellen Sie die folgende Bedingung:

var userEntry1 = document.forms[0].entry1.value;
var userEntry2 = document.forms[0].entry2.value;
if (userEntry1 || userEntry2) {
    ...
}

 

In der zusammengesetzten Bedingung überprüft der ||-Operator, ob für einen oder beide Operanden true zurückgegeben wird, bevor er true zurückgibt. Gibt der Benutzer Text in das erste Feld ein, wird die Bedingung kurzgeschlossen, da der Wert true für einen Operanden zu dem Endergebnis true führt. Wird nur in das zweite Feld Text eingegeben, wird der zweite Operand ausgewertet. Da für den zweiten Operanden true zurückgegeben wird (ein nicht leerer String), lautet das Ergebnis der Bedingung true. Nur wenn für beide Operanden false zurückgegeben wird, ist das Ergebnis der zusammengesetzten Bedingung false.

 
Beispiel
 
if (a <= b || b >= c) {
    ...
}
=== NN 4 IE 4 ECMA 2  

  

Der Identitätsoperator vergleicht zwei Operandenwerte und gibt ein Boolesches Ergebnis zurück. Sowohl der Wert als auch der Datentyp der beiden Operanden müssen identisch sein, damit für diesen Operator true zurückgegeben wird (es wirk keine automatische Datentypumwandlung durchgeführt). Informationen zu weniger strengen Vergleichen finden Sie in der Abhandlung des Gleichheitsoperators (==).

 
Beispiel
 
if (n === m) {
    ...
}
!== NN 4 IE 4 ECMA n/a  

  

Der Nichtidentitätsoperator vergleicht zwei Operandenwerte und gibt ein Boolesches Ergebnis zurück. Sowohl der Wert als auch der Datentyp der beiden Operanden muss identisch sein, damit für diesen Operator false zurückgegeben wird. Informationen zu weniger strengen Vergleichen finden Sie in der Abhandlung des Ungleichheitsoperators (!=).

 
Beispiel
 
if (n !== m) {
    ...
}
for NN 2 IE 3 ECMA 1  

  

Dies ist eine Konstruktion, die eine wiederholte Ausführung von Anweisungen ermöglicht. Sie wird im Allgemeinen für eine bestimmte Anzahl von Durchläufen verwendet.

 
Beispiel
 
var userEntry = document.forms[0].entry.value;
var oneChar;
for (var i = 0; i < userEntry.length; i++) {
    oneChar = userEntry.charAt(i);
    if (oneChar < "0" || oneChar > "9") {
        alert("The entry must be numerals only.");
    }
}
for/in NN 2 IE 3 ECMA 1  

  

Dies ist eine Variation der normalen for-Schleife, die Eigenschaftsnamen und -werte eines Objekts extrahieren kann. Die Ausgabe dieser Konstruktion enthält nur solche Eigenschaften (und, in Netscape 6, Methoden), die aufgrund ihrer Einstellung vom Browser intern aufzählbar sind. Opera 6 unterstützt diese Konstruktion nur für benutzerdefinierte Objekte, die per Skript erzeugt wurden.

 
Beispiel
 
function showProps( ) {
    objName = "image";
    obj = document.images[0];
    var msg = "";
    for (var i in obj) {
        msg += objName + "." + i + "=" + obj[i] + "\n";
    }
    alert(msg);
}
- NN 2 IE 3 ECMA 1  

  

Der Subtraktionsoperator subtrahiert die Zahl auf der rechten von der Zahl auf der linken Seite des Operators. Beide Operanden müssen Zahlen sein. Das Ergebnis eines Ausdrucks mit diesem Operator ist eine Zahl.

 
Beispiel
 
var myDifference = number1 - number2;
switch/case NN 4 IE 4 ECMA 3  

  

Damit können Sie gezielt zu den Ausführungspfaden für verschiedene Bedingungen eines Ausdrucks gelangen. Die optionale break-Anweisung am Ende eines jeden case-Blocks umgeht die switch-Anweisung und verhindert, dass der default-Block (sofern vorhanden) versehentlich ausgeführt wird.

 
Beispiel
 
var productList = document.forms[0].prodList;
var chosenItem = productList.options[productList.selectedIndex].value;
switch(chosenItem) {
    case "Small Widget":
        document.forms[0].price.value = "44.95";
        break;
    case "Medium Widget":
        document.forms[0].price.value = "54.95";
        break;
    case "Large Widget":
        document.forms[0].price.value = "64.95";
        break;
    default:
        document.forms[0].price.value = "Nothing Selected";
}
this NN 2 IE 3 ECMA 1  

  

Verweist auf das aktuelle Objekt. Bei einer Ereignisbehandlungsroutine für Formularsteuerelemente können Sie das Objekt als Parameter an die Funktion übergeben:

<input type="text" name="ZIP" onchange="validate(this);>"
 

In einem benutzerdefinierten Objektkonstuktor bezieht sich das Schlüsselwort immer auf das Objekt selbst. So können Sie den Eigenschaften Werte zuweisen (und sogar die Eigenschaften gleichzeitig erstellen):

function CD(label, num, artist) {
    this.label = label;
    this.num = num;
    this.artist = artist;
}
 

Innerhalb einer Funktion bezieht sich das Schlüsselwort this auf das Funktionsobjekt. Wenn die Funktion jedoch als Methode eines benutzerdefinierten Objektkonstruktors zugewiesen ist, verweist this auf die Instanz des Objekts, in dessen Kontext die Funktion ausgeführt wird.

 
Beispiel
 
<input type="text" name="phone" onchange="validate(this.value);">
throw NN 6 IE 5 ECMA 3  

  

Löst eine Ausnahmebedingung aus und übergibt zusammen mit der Ausnahme einen Wert. Obwohl es sich bei diesem Wert um einen einfachen String handeln kann, sollten Sie nach Möglichkeit eine Instanz des JavaScript-Error-Objekts übergeben, die genügend Informationen für die intelligente Fehlerbehandlung durch eine catch-Anweisung enthält. Eine throw-Anweisung muss in der try-Komponente einer try-catch-Konstruktion eingeschlossen sein.

 
Beispiel
 
function processNumber(inputField) {
    try {
        var inpVal = parseInt(inputField.value, 10);
        if (isNaN(inpVal)) {
            var msg = "Please enter a number only.";
            var err = new Error(msg);
            if (!err.message) {
                err.message = msg;
            }
            throw err;
        }
        // process number
    }
    catch (e) {
        alert(e.message);
        inputField.focus( );
        inputField.select( );
    }
}
try/catch NN 6 IE 5 ECMA 3  

  

Diese Konstruktion ermöglicht das Erfassen und Behandeln von Fehlern (Ausnahmen) ohne Unterbrechung des Anwendungsablaufs. Beide Teile dieser Ausnahmebehandlungskonstruktion sind erforderlich. Wenn ein Fehler in der try-Komponente auftritt, verzweigt die Ausführung sofort zur catch-Komponente, in der Ihre Skripts Warndialogfelder anzeigen, Daten modifizieren oder eine beliebige andere Aufgabe ausführen können, um zu verhindern, dass der JavaScript-Interpreter eine den Ablauf unterbrechende Fehlermeldung auslöst. Ausnahmen, die auf natürliche Weise (d. h. nicht durch eine throw-Anweisung ausgelöst) auftreten, übergeben eine Instanz des Error-Objekts als Parameter an die catch-Komponente. Anweisungen innerhalb der catch-Komponente können Eigenschaften des Fehlerobjekts untersuchen, um festzustellen, wie die dort angekommenen Ausnahmen zu behandeln sind. Auf diese Weise kann eine catch-Komponente verschiedene Arten von Fehlern verarbeiten.

 

try/catch-Konstruktionen können nur in Browsern eingesetzt werden, die sie unterstützen. Um zu verhindern, dass ältere Browser diese Konstruktion sehen, platzieren Sie den gesamten betroffenen Code in einem <script>-Tag, das ausdrücklich JavaScript 1.5 oder höher (mit dem Attribute language = "JavaScript1.5") erfordert.

 
Beispiel
 
function insertOneNode(baseNode, newNode, position) {
    try {
        baseNode.insertBefore(newNode, baseNode.childNodes[position]);
    }
    catch (e) {
        // handle W3C DOM Exception types
        switch (e.name) {
            case "HIERARCHY_REQUEST_ERR" :
                // process bad tree hierarchy reference
                break;
            case "NOT_FOUND_ERR" :
                // process bad refNode reference
                break;
            default:
                // process all other exceptions
        }
    }
    return true;
}
typeof NN 3 IE 3 ECMA 1  

  

Der typeof-Operator gibt eine von sechs Stringbeschreibungen des Datentyps eines Wertes zurück: Die folgenden Datentypen werden zurückgegeben:

  • boolean
  • function
  • number
  • object
  • string
  • undefined

Zum Objekttyp gehören zwar auch Arrays, der Operator stellt jedoch keine weiteren Informationen zum Objekt- oder Array-Typ des Wertes bereit (siehe instanceof-Operator).

 
Beispiel
 
if (typeof someVar == "string") {
    ...
}
void NN 3 IE 4 ECMA 1  

  

Dieser unitäre Operator wertet zwar den Ausdruck auf seiner rechten Seite aus, gibt jedoch immer den Wert undefined zurück. Dies ist auch dann der Fall, wenn der Ausdruck selbst (z. B. ein Funktionsaufruf) einen Wert ergibt. Dieser Operator wird häufig in Verbindung mit javascript: -Pseudo-URLs verwendet, die Funktionen aufrufen. Wenn die Funktion einen Wert zurückgibt, wird dieser von dem aufrufenden Ausdruck ignoriert.

 
Beispiel
 
<a href="javascript: void getSound( );" >...</a>
while NN 2 IE 3 ECMA 1  

  

Führt Anweisungen in einer Schleife aus, solange eine Bedingung wahr ist. Da die Bedingung am Anfang der Schleife ausgewertet wird, ist es unter bestimmten Umständen möglich, dass die Anweisungen in der Schleife nicht ausgeführt werden. Natürlich muss sich für den Ausdruck, der die Bedingung bildet, ein Aspekt seines Wertes in den Anweisungen ändern. Andernfalls entsteht eine unendliche Schleife.

 
Beispiel
 
var i = 0;
while (!document.forms[0].radioGroup[i].checked) {
    i++;
}
alert("You selected item number " + (i+1) + ".");
with NN 2 IE 3 ECMA 1  

  

Die with-Anweisung dient zum Hinzufügen eines Objekts zum Gültigkeitsbereich jeder darin verschachtelten Anweisung. Auf diese Weise kann der Code bei bestimmten Anweisungsgruppen, die auf einer bestimmten Objektreferenz beruhen, gekürzt werden. Beachten Sie, dass with-Konstruktionen im Allgemeinen sehr ineffizient sind. Eine wesentlich bessere Leistung erzielen Sie, indem Sie die Objektreferenz einer lokalen Variablen zuweisen und diese Variable in Ihrer Funktion verwenden.

 
Beispiel
 
with (document.forms[0]) {
    name1 = firstName.value;
    name2 = lastName.value;
    mail = eMail.value;
}
return NN 2 IE 3 ECMA 1  

  

Stoppt die Ausführung der aktuellen Funktion. Eine return-Anweisung kann sich an einer beliebigen Stelle in der Funktion befinden, auch in Steuerstrukturen. Sie können optional einen Wert angeben, der an die aufrufende Anweisung zurückgegeben wird. Dieser zurückgegebene Wert kann ein beliebiger JavaScript-Datentyp sein. Falls sich die return-Anweisung, die einen Wert zurückgibt, in einer Schleife oder einer anderen Steuerstruktur befindet, muss in jedem Zweig der Ausführungsstruktur vorhanden eine return-Anweisung sein. Dazu zählt auch eine standardmäßige return-Anweisung, wenn die Ausführung den Hauptausführungsbereich in der Nähe oder direkt am Ende der Funktion erreicht.

 
Beispiel
 
function validateNumber(form) {
    var oneChar;
    for (var i = 0; i < userEntry.length; i++) {
        oneChar = form.entry.value.charAt(i);
        if (oneChar < "0" || oneChar > "9") {
            return false;
        }
    }
    return true;
}
+= NN 2 IE 3 ECMA 1  

  

Dies ist der Nach-Wert-hinzufügen-Operator. In dieser Operatorklasse wird ein regulärer Zuweisungsoperator (=) mit einem der vielen anderen Operatoren kombiniert, um eine Zuweisung auszuführen. Dazu wird die für den linken Operanden angegebene Operation mit dem Wert des rechten Operanden ausgeführt. Wenn z. B. in einer Variable namens a ein String gespeichert ist, können Sie mit dem Operator += an a einen String anhängen:

a += " and some more.";
 

Ohne den Nach-Wert-hinzufügen-Operator müsste die Operation wie folgt strukturiert werden:

a = a + " and some more";
 

Die folgende Tabelle enthält alle Zuweisungsoperatoren, die auf diese Weise funktionieren:

 
Operator Beispiel Äquivalent
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
/= a /= b a = a / b
%= a %= b a = a % b
<<= a <<= b a = a << b
>>= a >>= b a = a >> b
>>>= a >>>= b a = a >>> b
&= a &= b a = a & b
|= a |= b a = a | b
^= a ^= b a = a ^ b
 
Beispiel
 
output += "<H1>Section 2</H1>";
		total *= .95;
+ NN 2 IE 3 ECMA 1  

  

Der Additionsoperator funktioniert sowohl für Zahlen als auch für Strings. Die Ergebnisse sind jedoch je nach Datentyp der Operanden unterschiedlich. Wenn beide Operanden Zahlen sind, ist das Ergebnis die Summe der beiden Zahlen. Sind beide Operanden Strings, ist das Ergebnis eine Verkettung der beiden Strings (in der Reihenfolge der Operanden). Handelt es sich bei einem der Operanden um eine Zahl und bei dem anderen um einen String, wird der numerische Datentyp in einen String konvertiert, und die beiden Strings werden verkettet. Zum Konvertieren eines Stringoperanden in eine Zahl wird die Funktion parseInt( ) oder parseFloat( ) verwendet.

 
Beispiel
 
var mySum = number1 + number2;
var newString = "string1" + "string2";
&& NN 2 IE 3 ECMA 1  

  

Der AND-Operator überprüft, ob zwei Boolesche Ausdrücke gleich sind. Wenn beide Ausdrücke den Wert "true" aufweisen, ist auch der Wert des &&-Operators "true". Wenn ein Ausdruck bzw. beide Ausdrücke den Wert "false" aufweisen, hat auch der &&-Operator den Wert "false".

 

Ein Boolescher Ausdruck kann aus einem Vergleichsausdruck (mit einem der zahlreichen Vergleichsoperatoren) oder einer Vielzahl anderer Werte bestehen. Im Folgenden finden Sie die am häufigsten verwendeten Datentypen, Werte und die dazugehörigen Booleschen Äquivalente.

Datentyp Boolesches Äquivalent
Zahl außer Null true
Null false
Beliebiger nicht leerer String true
Leerer String false
Beliebiges Objekt true
null false
undefined false
 

Anhand dieser Informationen können Sie mithilfe des &&-Operators zusammengesetzte Bedingungen erstellen. Wenn Sie z. B. überprüfen möchten, ob ein Wert in ein Formularfeld eingegeben wurde und ob die eingegebene Zahl größer als 100 ist, würde die Bedingung wie folgt aussehen:

var userEntry = document.forms[0].entry.value ;
if (userEntry&& parseInt(userEntry) >= 100) {
    ...
} 
 

Wenn der Benutzer keinen Wert eingegeben hat, ist der String ein leerer String. Wenn der erste Operand in der zusammengesetzten Bedingung als falsch bewertet wird, sorgen die Regeln des &&-Operators dafür, dass der gesamte Ausdruck als falsch zurückgegeben wird (da der Operator nur dann true zurückgibt, wenn beide Operanden true sind). Da Ausdrücke wie zusammengesetzte Bedingungen von links nach rechts ausgewertet werden, schließt der Wert false des ersten Operanden die Bedingung kurz, so dass als Endergebnis false zurückgegeben wird, d. h. der zweite Operand wird nicht ausgewertet.

 
Beispiel
 
if (a <= b && b >= c) {
    ...
}
break NN 2 IE 3 ECMA 1  

  

Stoppt die Ausführung der aktuellen Schleife und übergibt die Steuerung an die nächste Skriptanweisung nach dem Ende der aktuellen Schleife. Der Gültigkeitsbereich einer break-Anweisung ohne label-Parameter ist die eigene Schleife. Um aus einer verschachtelten Schleife auszubrechen, weisen Sie jeder verschachtelten Ebene eine Beschriftung zu, und verwenden die gewünschte Beschriftung dann als Parameter für die Anweisung break. Weitere Informationen finden Sie unter der Anweisung label (ab Navigator 4 und Internet Explorer 4).

 
Beispiel

Siehe Anweisung label.

continue NN 2 IE 3 ECMA 1  

  

Stoppt die Ausführung der aktuellen Iteration durch die Schleife und kehrt zum Anfang der Schleife zurück, um einen neuen Durchlauf auszuführen (der update-Ausdruck wird ausgeführt, wenn er in der for-Schleife angegeben ist). Wenn Sie eine verschachtelte Schleife verwenden, weisen Sie jeder verschachtelten Ebene eine Beschriftung zu, und verwenden die gewünschte Beschriftung dann als Parameter für die Anweisung continue. Weitere Informationen finden Sie unter der Anweisung label (ab Navigator 4 und Internet Explorer 4).

 
Beispiel
 
outerLoop:
for (var i = 0; i <= maxValue1; i++) {
    for (var j = 0; j <= maxValue2; j++) {
        if (j*i == magic2) {
            continue outerLoop;
        }
    }
}
catch NN 2 IE 3 ECMA 1  

  

Siehe try