1. Index
  2. Shell
  3. C
  4. POSIX
  5. JavaScript

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
2016 7 Nebenläufigkeit
2017 8 Async Funktionen
2018 9

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 kann eigenständige Programme ausführen.

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

Ausführen mit:

node hello.js
Hello, World!

Datentypen

Variablen sollten immer mit var, let oder const deklariert werden. Andernfalls sind sie global sichtbar, was leicht zu unerwünschten Seiteneffekten führt. In einem Booleschen Kontext evaluieren die Zahl 0, die leere Zeichenkette, die leere Reihung 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 Zahlenliterale sind immer Fließkommazahlen
var string = "" Zeichenketten sind unverändliche Folgen von Zeichen
var array = [] Reihungen sind Listen von Objekten
var object = {} Objekte sind Streutabellen von Attributen
let tmp = 0 Blockweite (wie in C)
const pi = 3.14152 Unverändliche Variable

Operatoren

In arithmetischen und logischen Ausdrücken gelten die üblichen Regeln für Vorrang. Der +-Operator konkateniert Zeichenketten.

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

Schleifen

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 mit Initialisierung, Abbruchbedingung und Inkrement
for (Index in Enumerable) { … }
Über Schlüssel einer Liste iterieren
for (Element of Iterable) { … }
Über Elemente einer Menge iterieren
for await (Element of Iterable) { … }
Über Erzeugnisse eines Generators iterieren
continue
Aktuellen Schleifendurchlauf beenden
break
Schleife verlassen
return Expression
Funktion verlassen
throw Name
Ausnahme auslösen
try { … } catch (Name) { … } finally { … }
Ausnahme behandeln

Literatur