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.
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 |
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.jsif (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!
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 |
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 | = | += | -= | *= | /= | %= |
switch (Name) { case Value: …; break; default: …; break; }
if (Condition) { … } else if { … } else { … }
while (Condition) { … }
do { … } while (Condition)
for (Statement; Condition; Statement) { … }
for (Index in Enumerable) { … }
for (Element of Iterable) { … }
for await (Element of Iterable) { … }
continue
break
return Expression
throw Name
try { … } catch (Name) { … } finally { … }