JavaScript

JavaScript ist eine klassenfreie objektorientierte Sprache. Ursprünglich wurde sie von der Firma Netscape für dynamische Webanwendungen konzipiert und später als ECMA-262 standardisiert.

Versionen

Datum Version Neuerungen
1997 1 Erstveröffentlichung von Netscape
1998 2 Anpassungen an ISO 16262
1999 3 Reguläre Ausdrücke, Ausnahmen
4 Abgesagt
2009 5 Strict-Mode, Reflektion, JSON-Objekt
2011 5.1 Anpassungen an ISO 16262
2015 6 Iteratoren, Generatoren
7 Nebenläufigkeit

Beispiel

Ursprünglich werden JavaScript-Funktionen in Webseiten eingebettet und vom Browser ausgeführt.

hello.html
<!DOCTYPE html> <html lang="de"> <script>document.writeln ("Hallo, Welt!");</script> </html>

Ausführen mit:

firefox hello.html

Der Interpreteter Node.js kann eigenständige Programme ausführen.

hello.js
if (process.argv.length == 0) { console.log ('Hello, World!'); } else { process.argv.forEach (function (arg) { console.log ('Hello, ' + arg); }); }

Ausführen mit:

nodejs hello.js
Hello, World!

Syntax

Datentypen

Alle Variablen sollten mit var deklariert werden. Andernfalls werden sie global sichtbar, was zu unerwünschten Seiteneffekten führt. In einem Booleschen Kontext evaluieren die Zahl 0, der leere String, der leere Array und das leere Objekt zu false.

Deklaration Name Initialisierung Beschreibung
var undef = undefined; Default für nicht initialisierte Variablen
var empty = null; Platzhalter für Variable ohne Wert
var bool = false; Wahrheitswert
var number = 0; Alle Zahlenliterale sind Fließkommazahlen
var string = ""; Zeichenketten sind unverändliche Folgenx von Zeichen
var array = []; Arrays sind Listen von Objekten
var object = {}; Objekte sind Hashmaps von Attributen
const var final = 3.14152 Unverändliche Variable

Operatoren

In arithmetischen und logischen Ausdrücken gelten die üblichen Regeln für Vorrang. Bei Zeichenketten steht der +-Operator für Konkatenation.

Operator
Klammerausdrücke ()
Unäre Arithmetik + - ++ --
Binäre Arithmetik * / %+ -
Vergleich < > <=>= == != === !==
Bitoperationen ~ & | ^ << >> >>>
Logik ! && ||
Ternärer Operator ? … :
Zuweisung = += -= *= /= %=

Flusskontrolle

switch (name) { case value: …; break; default: …; break; }
Mehrfachverzweigung
if (condition) { … } else if { … } else { … }
Verzweigung
while (condition) { … }
Schleife mit Abbruchbedingung
do { … } while (condition);
Schleife mit Abbruchbedingung am Ende
for (statement; condition; statement) { … }
Schleife für Iteration mit Initialisierung, Abbruchbedingung und Inkrement
for (name in array) { statements }
Iteration über Liste
continue;
Aktuellen Schleifendurchlauf beenden
break;
Schleife verlassen
return expression;
Rücksprung aus Funktion
throw name;
Ausnahme auslösen
try { … } catch (name) { … } finally { … }
Ausnahmebehandlung

Literatur