EMZETT.
Login

JS

Kurz: JavaScript — die Skriptsprache, die im Browser läuft und Webseiten interaktiv macht.

Genauer: Ursprünglich reine Browser-Sprache, heute dank Node.js auch serverseitig einsetzbar. Läuft single-threaded mit einer Event-Loop, wodurch asynchrone Operationen (z. B. Netzwerk-Requests) nicht blockierend ablaufen. TypeScript baut als typisierte Erweiterung direkt auf JavaScript auf.

Im Detail

Single-Thread mit Event-Loop

Das Single-Thread-Modell mit Event-Loop ist JavaScripts zentrales Ausführungsprinzip: es gibt nur einen einzigen Ausführungsstrang, aber lang laufende Operationen (Netzwerk-Request, Timer, Datei-I/O in Node.js) werden nicht blockierend an die Umgebung (Browser oder Node.js-Laufzeit) delegiert — sobald sie fertig sind, reiht die Event-Loop ihre Callback-Funktion wieder in den Hauptstrang ein.

console.log("1");
setTimeout(() => console.log("2"), 0);
console.log("3");
// Ausgabe: 1, 3, 2 - der Timer-Callback läuft erst NACH dem restlichen synchronen Code
 
async function ladeDaten() {
  const antwort = await fetch("/api/daten");
  const daten = await antwort.json();
  return daten;
}

Von Callbacks zu async/await

Moderne asynchrone Programmierung läuft meist über Promises (Objekte, die einen zukünftigen Wert repräsentieren) und die async/await-Syntax, die die früher übliche, tief verschachtelte “Callback-Hölle” (mehrere ineinander verschachtelte Callback-Funktionen, die den Code schnell unübersichtlich machten) deutlich lesbarer macht — asynchroner Code liest sich mit async/await fast wie synchroner Code, obwohl darunter weiterhin nicht-blockierend gearbeitet wird.

Historische Eigenheiten

JavaScript wurde 1995 von Brendan Eich in nur zehn Tagen für den Netscape-Browser entwickelt (unter dem ursprünglichen Namen Mocha, dann LiveScript, erst kurz vor Release aus Marketinggründen in “JavaScript” umbenannt, um von der damals populären Sprache Java zu profitieren — beide Sprachen sind technisch weitgehend unverwandt). Diese extrem kurze Entwicklungszeit hinterließ bis heute einige historisch bedingte Eigenheiten (z. B. lockere, teils überraschende automatische Typumwandlung: "5" + 3 ergibt "53", aber "5" - 3 ergibt 2), die TypeScript durch statische Typprüfung gezielt entschärft, ohne die Sprache selbst zu ersetzen.

Standardisierung über ECMAScript

JavaScript wird formal über den ECMAScript-Standard spezifiziert — verschiedene Umgebungen (Browser, Node.js, Deno) implementieren jeweils diesen Standard, mit teils leicht unterschiedlichem Funktionsumfang. Seit 2015 (ES6/ES2015) erscheint jährlich eine neue ECMAScript-Version mit neuen Sprachfeatures, was JavaScript in den letzten zehn Jahren erheblich moderner und mächtiger gemacht hat als in seinen ersten beiden Jahrzehnten.

Siehe auch: TypeScript, HTML, Node.js