Grundlagen
Alle ansehen- 01 Was ist JavaScript? Mehr-Paradigmen-Sprache für Browser, Server und mehr
- 02 Erste Schritte Drei Wege, JavaScript heute auszuführen — Browser, REPL und Node-Datei
- 03 Strict Mode Wie strict mode stille Fehler abschaltet — und warum ESM ihn längst erzwingt
- 04 ECMAScript-Versionen Yearly Release Train, TC39-Stages und Feature-Highlights
- 05 JavaScript-Engine-Modell Wie eine JS-Engine deinen Code verarbeitet und optimiert
Syntax & Sprachkern
Alle ansehen- 01 var, let, const Drei Wege, in JavaScript eine Variable zu deklarieren — und warum es 2026 nur noch zwei davon braucht
- 02 Operatoren-Übersicht Alle JavaScript-Operatoren im Überblick — Kategorien, Eigenheiten, Precedence-Fallen
- 03 Expressions vs. Statements Warum jeder Wert eine Expression ist, aber nicht jede Anweisung — und was das in der Praxis bedeutet
- 04 Kommentare & JSDoc Wie aus Kommentaren mit JSDoc und @ts-check ein leichtgewichtiges Type-System wird
- 05 Template Literals Backticks ersetzen Konkatenation — und mit Tagged Templates wird daraus eine echte Mini-DSL
- 06 Optional Chaining & Nullish Sicheres Property-Access und saubere Defaults — die ES2020-Operatoren ?. und ?? im Detail
- 07 Hoisting verstehen Wie die JS-Engine Deklarationen vor der Ausführung sortiert — und warum let/const trotzdem nicht hoisted wirken
Datentypen
Alle ansehen- 01 Primitives & Objects JavaScript hat zwei Welten: 7 immutable Primitives und alles andere als Object — mit ganz unterschiedlichen Spielregeln
- 02 Number & BigInt Wie JavaScript Zahlen speichert — und warum BigInt für große Integer unverzichtbar ist
- 03 String Wie Strings in JavaScript wirklich funktionieren — UTF-16, Surrogate Pairs und der length-Bug
- 04 Boolean & Truthy/Falsy Die 8 Falsy-Werte, ihre Tücken — und warum new Boolean(false) trotzdem truthy ist
- 05 null vs. undefined Zwei leere Werte, ein Sprachkonzept — wann nutzt man welchen, und warum gibt es überhaupt beide?
- 06 typeof vs. instanceof Wann typeof, wann instanceof, wann Object.prototype.toString.call — und warum keiner allein reicht
- 07 Coercion (implizit & explizit) Wie JavaScript Typen automatisch konvertiert — und warum explizite Konvertierung fast immer die bessere Wahl ist
Kontrollstrukturen
Alle ansehen- 01 if / else / Ternary Bedingte Ausführung in JavaScript: if/else als Statement, der Ternary-Operator als Expression — wann was die bessere Form ist
- 02 switch & Fall-through Mehrweg-Verzweigung mit switch: strikter Vergleich, Fall-through-Verhalten, default-Position und das Block-Scope-Problem mit let/const
- 03 for / while / do-while Die drei klassischen Schleifen-Formen: for mit Zähler, while mit Vor-Test und do-while mit Nach-Test — wann welche Form passt
- 04 for-of vs. for-in Zwei Schleifen-Formen, die gleich aussehen aber grundverschieden funktionieren: for-of iteriert Werte, for-in enumeriert Property-Keys
- 05 break, continue & Labels Wie break und continue Schleifen vorzeitig verlassen oder überspringen — und wie Labels gezielt auf eine äußere Schleife greifen
- 06 try / catch / finally Grundlagen des Exception-Handlings: try mit catch und/oder finally, throw von Errors, Optional Catch Binding und das Control-Flow-Detail in finally
Funktionen
Alle ansehen- 01 Declaration vs. Expression Die zwei Grundformen einer Funktions-Definition: function name() {} als Declaration und const f = function() {} als Expression — mit Unterschieden im Hoisting und Naming
- 02 Arrow Functions Die kompakte Funktions-Syntax mit =>, ihr lexikalisches this-Binding und die Stellen, an denen sie NICHT die richtige Wahl ist
- 03 Default, Rest & Spread Default-Werte für Parameter, Rest-Parameter für variadic Funktionen und Spread im Funktions-Aufruf — die drei Parameter-Modernisierungen aus ES2015
- 04 Closures Closures: Funktionen, die auf Variablen ihres Definitions-Scopes zugreifen, auch wenn dieser längst beendet ist — Kapselung, private State, Memoization
- 05 IIFE Eine Funktion, die direkt nach ihrer Definition aufgerufen wird — historisch der Modul-Ersatz vor ESM, heute nur noch selten nötig
- 06 this in Funktionen Die vier Binding-Regeln für this in klassischen Funktionen, das lexikalische Verhalten in Arrows und der Unterschied zwischen strict und sloppy Mode
- 07 call, apply, bind Die drei Function-Prototype-Methoden, um this explizit zu setzen — call/apply rufen sofort auf, bind liefert eine neue Funktion
- 08 Currying & Partial Application Currying: eine n-stellige Funktion in eine Kette einstelliger Funktionen umwandeln. Partial Application: einige Argumente vorbelegen, Rest später
- 09 First-Class Functions Funktionen sind in JavaScript First-Class Values: zuweisbar an Variablen, übergebbar als Argumente, returnbar als Werte — das Fundament aller funktionalen Patterns
Arrays
Alle ansehen- 01 Array-Konstruktor Der Array-Konstruktor erzeugt Arrays per new Array() — mit besonderem Verhalten bei einem numerischen Argument und der ES2015-Alternative Array.of()
- 02 Array.from() Konvertiert iterables und array-like Objekte in echte Arrays — mit optionalem Mapper, length-Trick und ES2024 fromAsync()
- 03 Destructuring bei Arrays Array-Destructuring entpackt Werte aus Arrays in einzelne Variablen — mit Defaults, Rest-Pattern, Skipping und verschachtelten Mustern
- 04 Spread-Operator bei Arrays Drei Punkte, viele Anwendungen: Arrays kopieren, kombinieren, in Funktions-Calls spreaden — alles iterable-basiert
- 05 Array.prototype.push() Hängt Elemente ans Array-Ende. Mutiert das Original, liefert die neue Länge (nicht das Array!) zurück
- 06 Array.prototype.pop() Entfernt das letzte Element eines Arrays in-place und gibt es zurück. Bei leerem Array: undefined und length bleibt 0
- 07 Array.prototype.unshift() Fügt Elemente am Anfang eines Arrays ein. Mutiert das Original, liefert neue Länge. O(n) wegen Reindexing — Spread oft besser
- 08 Array.prototype.shift() Entfernt das erste Element und gibt es zurück. O(n) wegen Reindexing — zusammen mit push die klassische FIFO-Queue
- 09 Array.prototype.concat() Erzeugt ein neues Array aus Original + Argumenten. Flache Kopie, Spread ist in modernem Code oft die bessere Wahl
- 10 Array.prototype.reverse() Kehrt ein Array in-place um — und mutiert es dabei. Mit ES2023 gibt es toReversed() als immutable Alternative
- 11 Array.prototype.sort() Sortiert ein Array in-place. Default ist lexikographischer String-Vergleich — eigene Compare-Funktion fast immer Pflicht
- 12 Array.prototype.map() Erzeugt ein neues Array, indem jeder Wert durch eine Callback-Funktion transformiert wird. Immutable, kombinierbar mit filter und reduce
- 13 Array.prototype.filter() Erzeugt ein neues Array mit allen Elementen, für die der Callback truthy zurückgibt. Immutable, idiomatisch in Pipelines
- 14 Array.prototype.reduce() Reduziert ein Array zu einem einzigen Wert. Mit Initial-Wert sicher, ohne sind Edge-Cases — sehr mächtig, aber nicht für alles die richtige Wahl
- 15 Array.prototype.every() Prüft, ob ALLE Elemente einen Predicate erfüllen. Short-Circuit beim ersten falsy, leeres Array liefert true (vacuous truth)
Datum & Zeit
Alle ansehen- 01 Constructor
- 02 Date.now()
- 03 Date.parse()
- 04 Date.prototype.getDate()
- 05 Date.prototype.getDay()
- 06 Date.prototype.getFullYear()
- 07 Date.prototype.getHours()
- 08 Date.prototype.getMilliseconds()
- 09 Date.prototype.getMinutes()
- 10 Date.prototype.getMonth()
- 11 Date.prototype.getSeconds()
- 12 Date.prototype.getTime()
- 13 Date.prototype.getTimezoneOffset()
- 14 Date.prototype.getUTCDate()
- 15 Date.prototype.getUTCDay()
- 16 Date.prototype.getUTCFullYear()
- 17 Date.prototype.getUTCHours()
- 18 Date.prototype.getUTCMilliseconds()
- 19 Date.prototype.getUTCMinutes()
- 20 Date.prototype.getUTCMonth()
- 21 Date.prototype.getUTCSeconds()
- 22 Date.prototype.setDate()
- 23 Date.prototype.setFullYear()
- 24 Date.prototype.setHours()
- 25 Date.prototype.setMilliseconds()
- 26 Date.prototype.setMinutes()
- 27 Date.prototype.setMonth()
- 28 Date.prototype.setSeconds()
- 29 Date.prototype.setTime()
- 30 Date.prototype.setUTCDate()
- 31 Date.prototype.setUTCFullYear()
- 32 Date.prototype.setUTCHours()
- 33 Date.prototype.setUTCMilliseconds()
- 34 Date.prototype.setUTCMinutes()
- 35 Date.prototype.setUTCMonth()
- 36 Date.prototype.setUTCSeconds()
- 37 Date.prototype.toDateString()
- 38 Date.prototype.toISOString()
- 39 Date.prototype.toJSON()
- 40 Date.prototype.toLocaleDateString()
- 41 Date.prototype.toLocaleString()
- 42 Date.prototype.toLocaleTimeString()
- 43 Date.prototype.toString()
- 44 Date.prototype.toTemporalInstant()
- 45 Date.prototype.toTimeString()
- 46 Date.prototype.toUTCString()
- 47 Date.prototype.valueOf()
- 48 Date.prototype[Symbol.toPrimitive]()