// LERNEN · SPRACHEN & FRAMEWORKS
JavaScript
Ein praxisnaher JavaScript-Kurs vom ersten Programm in der Konsole bis zu asynchronem Code, Web Workern, Sicherheit und dem Veröffentlichen eines Pakets. Jedes Beispiel wird ausgeführt und an ECMAScript 2026 geprüft.
Niveau: Einstieg bis Vertiefung · Für: Alle, die das Web mit JavaScript programmieren möchten, vom ersten Skript bis zum ausgelieferten Code. Keine Vorkenntnisse nötig.
Lehrplan
Einstieg
Vollständig
Nach dieser Stufe können Sie
- JavaScript in der Browser-Konsole und mit Node.js ausführen und einen SyntaxError, ReferenceError oder TypeError lesen, um den Fehler zu finden
- Programme mit let und const, Zahlen, Strings, Template-Literalen, Bedingungen und Schleifen schreiben und === und == unterscheiden
- Funktionen mit Standard- und Rest-Parametern, Pfeilfunktionen und Closures schreiben und aufrufen
- Daten mit Arrays und Objekten, map, filter, reduce, Destrukturierung und Spread speichern und umformen und in JSON und zurück umwandeln
- Eine interaktive Seite bauen, die das DOM als Reaktion auf Ereignisse liest und ändert, mit Ereignisdelegation
B1Erste Schritte5 von 5 geschrieben · 5 LektionenLäuft im Browser
Ein erstes Programm ausführen, lesen und von Fehlern befreien
Sie bauen: Ein Zahlenratespiel
B2Grammatik, Typen und Operatoren5 von 5 geschrieben · 5 LektionenLäuft im Browser
Jeden primitiven Typ und jeden Operator richtig einsetzen, auch Gleichheit und Gleichwertigkeit
Sie bauen: Ein Einheitenumrechner
B3Kontrollfluss und Schleifen5 von 5 geschrieben · 5 LektionenLäuft im Browser
Für eine Aufgabe die passende Verzweigung und Schleife wählen
Sie bauen: Ein Notenbericht
B4Funktionen5 von 5 geschrieben · 5 LektionenLäuft im Browser
Kleine wiederverwendbare Funktionen schreiben und Closures verstehen
Sie bauen: Eine Bibliothek aus Zähler und Formatierer mit Closures
B5Arrays, Objekte und JSON5 von 5 geschrieben · 5 LektionenLäuft im Browser
Sammlungen von Datensätzen mit Array-Methoden, Destrukturierung, Spread und JSON umformen
Sie bauen: Summen für einen Warenkorb
B6Das DOM und Ereignisse5 von 5 geschrieben · 5 LektionenLäuft im Browser
Eine Seite mit Listenern, Bubbling und Delegation auf den Nutzer reagieren lassen
Sie bauen: Eine Bildergalerie
Projekt der Stufe Einstieg
Haushaltsbuch
Eine einzelne Seite, die Ausgaben hinzufügt, auflistet und löscht, die Summe zeigt, nach Kategorie filtert und ihre Daten in localStorage behält.
Läuft im BrowserSelbst geprüft anhand einer Checkliste
Zur ProjektanleitungAufbau
Vollständig
Nach dieser Stufe können Sie
- Daten mit Klassen, privaten Feldern, Vererbung und der Prototypkette modellieren und erklären, was class im Hintergrund tut
- Ein Programm auf ES-Module aufteilen, mit Node.js ausführen und Abhängigkeiten und Skripte mit npm verwalten
- Fehler mit try, catch, finally, eigenen Error-Unterklassen und cause behandeln und Tests mit node:test schreiben
- Die Reihenfolge von synchronem Code, Microtasks und Timern vorhersagen und korrekten asynchronen Code mit Promise.all, allSettled, any und race schreiben
- JSON über HTTP laden, HTTP-Fehler und Abbruch mit AbortController behandeln und Daten im Client speichern
I1Asynchrones JavaScript6 von 6 geschrieben · 6 LektionenLäuft im Browser
Die Ausführungsreihenfolge von asynchronem Code vorhersagen und steuern
Sie bauen: Ein Quiz mit Countdown
I2Objekte, Prototypen und Klassen5 von 5 geschrieben · 5 LektionenLäuft im Browser
Daten mit Klassen modellieren und Prototypen erklären
Sie bauen: Ein Lagerbestandsmodell
I3Module, Node.js und npm5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner
Ein Programm aus mehreren Dateien mit ES-Modulen strukturieren und lokal mit Node.js und npm ausführen
Sie bauen: Ein To-do-Werkzeug für die Kommandozeile
I4Fehler, Debugging und Tests5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner
Laut scheitern, Fehler schnell finden und Verhalten mit node:test belegen
Sie bauen: Eine getestete Validierungsbibliothek
I5Mit Daten arbeiten5 von 5 geschrieben · 5 LektionenLäuft im Browser
Text, Datumsangaben und Schlüsseldaten mit Map, Set, regulären Ausdrücken und Intl verarbeiten
Sie bauen: Eine Logdatei-Analyse
I6Netzwerkanfragen und Speicher im Client5 von 5 geschrieben · 5 LektionenLäuft auf Ihrem Rechner
Daten in einer Web-App mit fetch, AbortController, localStorage und IndexedDB laden, senden und behalten
Sie bauen: Ein Leselisten-Client für einen lokalen JSON-Server
Projekt der Stufe Aufbau
Leseliste
Ein Node.js-Kommandozeilenwerkzeug und ein Browser-Client mit ES-Modulen, Klassen, einem JSON-Dateispeicher und einem fetch-Client, der Fehler und Abbruch behandelt.
Läuft auf Ihrem RechnerSelbst geprüft anhand einer Checkliste
Zur ProjektanleitungVertiefung
Demnächst verfügbar
Nach dieser Stufe können Sie
- Iterables, Generatoren und asynchrone Iteratoren schreiben und verzögert ausgewertete Pipelines mit Iterator-Helfern bauen
- Property-Deskriptoren, Symbole, Proxy und Reflect nutzen und die Bindung von this und den Strict Mode erklären
- Rechenintensive Arbeit in einen Web Worker verlagern, mit typisierten Arrays arbeiten und ein Speicherleck finden und beheben
- XSS, Prototype Pollution und Risiken durch Abhängigkeiten erkennen und verhindern und eine Content Security Policy setzen
- Ein getestetes, gelintetes Paket veröffentlichen, eine statische Web-App ausliefern und ECMA-262 lesen, um eine Verhaltensfrage zu klären
A1Iteratoren und GeneratorenDemnächst verfügbar · 5 LektionenLäuft im Browser
Verzögert ausgewertete, kombinierbare Datenpipelines bauen
Sie bauen: Eine verzögert ausgewertete CSV-Pipeline
- A1.1Demnächst verfügbar
- A1.2Demnächst verfügbar
- A1.3Demnächst verfügbar
- A1.4Demnächst verfügbar
- A1.5Demnächst verfügbar
A2Metaprogrammierung und Objekt-InternaDemnächst verfügbar · 5 LektionenLäuft im Browser
Mit Deskriptoren, Symbolen, Proxy und Reflect steuern, wie sich Objekte verhalten
Sie bauen: Ein validierter, beobachtbarer Speicher
- A2.1Demnächst verfügbar
- A2.2Demnächst verfügbar
- A2.3Demnächst verfügbar
- A2.4Demnächst verfügbar
- A2.5Demnächst verfügbar
A3this, Strict Mode und ZahlenDemnächst verfügbar · 5 LektionenLäuft im Browser
Knifflige Verhaltensfragen zu this, Strict Mode und Zahlen anhand der Spezifikation klären
Sie bauen: Ein Modul für Geldbeträge
- A3.1Demnächst verfügbar
- A3.2Demnächst verfügbar
- A3.3Demnächst verfügbar
- A3.4Demnächst verfügbar
- A3.5Demnächst verfügbar
A4Nebenläufigkeit und LeistungDemnächst verfügbar · 5 LektionenLäuft im Browser
Den Haupt-Thread frei und den Speicher unter Kontrolle halten
Sie bauen: Ein Bildfilter in einem Web Worker
- A4.1Demnächst verfügbar
- A4.2Demnächst verfügbar
- A4.3Demnächst verfügbar
- A4.4Demnächst verfügbar
- A4.5Demnächst verfügbar
A5SicherheitDemnächst verfügbar · 5 LektionenBrowser und Ihr Rechner
Die häufigen Angriffe im Client verhindern: XSS, Prototype Pollution und riskante Abhängigkeiten
Sie bauen: Abhängigkeiten prüfen
- A5.1Demnächst verfügbar
- A5.2Demnächst verfügbar
- A5.3Demnächst verfügbar
- A5.4Demnächst verfügbar
- A5.5Demnächst verfügbar
A6Werkzeuge, Pakete und AuslieferungDemnächst verfügbar · 5 LektionenLäuft auf Ihrem Rechner
Code ausliefern, den andere nutzen können: linten, bündeln, veröffentlichen und bereitstellen
Sie bauen: Eine statische App bereitstellen
- A6.1Demnächst verfügbar
- A6.2Demnächst verfügbar
- A6.3Demnächst verfügbar
- A6.4Demnächst verfügbar
- A6.5Demnächst verfügbar
Projekt der Stufe Vertiefung
CSV-Explorer
Liest eine große CSV-Datei in einem Web Worker mit einer Generator-Pipeline ein und zeigt Kennzahlen, ohne die Eingabe zu blockieren, unter einer strengen CSP.
Läuft im BrowserSelbst geprüft anhand einer Checkliste
Abschlussprojekt
Abschlussprojekt
Offline-fähiger Gewohnheits-Tracker
Eine statische Web-App mit Modulen, IndexedDB-Speicher, JSON-Import und -Export, einer per Tastatur bedienbaren Oberfläche, node:test-Tests und einer README zur Auslieferung.
Läuft auf Ihrem RechnerSelbst geprüft anhand einer Checkliste
Quellen
- ECMAScript 2026 Language Specification, 24.1.3.7 (Ecma TC39; englisch)
- What is JavaScript? (MDN Learn web development; englisch)
- Troubleshooting JavaScript (MDN Learn web development; englisch)
- console: log() static method (MDN Web APIs; englisch)
- Run Node.js scripts from the command line (Node.js Learn; englisch)
- Console (Node.js v24 documentation; englisch)
- Storing the information you need: Variables (MDN Learn web development; englisch)
- let (MDN JavaScript reference; englisch)
- const (MDN JavaScript reference; englisch)
- TypeError: invalid assignment to const "x" (MDN JavaScript error reference; englisch)
- ReferenceError: can't access lexical declaration 'X' before initialization (MDN JavaScript reference; englisch)
- JavaScript error reference (MDN; englisch)
- SyntaxError (MDN JavaScript reference; englisch)
- ReferenceError (MDN JavaScript reference; englisch)
- TypeError (MDN JavaScript reference; englisch)
- Error.prototype.stack (MDN; englisch)
- ReferenceError: "x" is not defined (MDN JavaScript reference; englisch)
- TypeError: "x" is (not) "y" (MDN JavaScript error reference; englisch)
- SyntaxError: string literal contains an unescaped line break (MDN JavaScript error reference; englisch)
- console (MDN Web APIs; englisch)
- debugger (MDN; englisch)
- Debugger (Node.js v24 documentation; englisch)
- A first splash into JavaScript (MDN Learn web development; englisch)
- if...else (MDN JavaScript reference; englisch)
- Math.random() (MDN JavaScript reference; englisch)
- Math.floor() (MDN JavaScript reference; englisch)
- Grammar and types (MDN JavaScript Guide; englisch)
- typeof (MDN JavaScript reference; englisch)
- Number (MDN JavaScript reference; englisch)
- Boolean (MDN JavaScript reference; englisch)
- Numbers and strings (MDN JavaScript Guide; englisch)
- Expressions and operators (MDN JavaScript Guide; englisch)
- Remainder (%) (MDN JavaScript reference; englisch)
- Math.round() (MDN JavaScript reference; englisch)
- Math.trunc() (MDN JavaScript reference; englisch)
- Number.prototype.toFixed() (MDN JavaScript reference; englisch)
- Number.isNaN() (MDN JavaScript reference; englisch)
- Number.parseInt() (MDN JavaScript reference; englisch)
- Number.MAX_SAFE_INTEGER (MDN JavaScript reference; englisch)
- JavaScript data types and data structures (MDN JavaScript Guide; englisch)
- String (MDN JavaScript reference; englisch)
- String.prototype.slice() (MDN JavaScript reference; englisch)
- String.prototype.includes() (MDN JavaScript reference; englisch)
- String.prototype.trim() (MDN JavaScript reference; englisch)
- String.prototype.padStart() (MDN JavaScript reference; englisch)
- Template literals (Template strings) (MDN JavaScript reference; englisch)
- Equality comparisons and sameness (MDN JavaScript Guide; englisch)
- Object.is() (MDN JavaScript reference; englisch)
- Less than (<) (MDN JavaScript reference; englisch)
- Number() constructor (MDN JavaScript reference; englisch)
- NIST Guide to the SI, Appendix B.8: Factors for Units Listed Alphabetically (NIST SP 811)
- NIST Guide to the SI, Footnotes to Appendix B (NIST SP 811)
- Control flow and error handling (MDN; englisch)
- Truthy (MDN Glossary; englisch)
- Logical AND (&&) (MDN JavaScript reference; englisch)
- Logical OR (||) (MDN JavaScript reference; englisch)
- Logical NOT (!) (MDN JavaScript reference; englisch)
- Nullish coalescing operator (??) (MDN JavaScript reference; englisch)
- switch (MDN JavaScript reference; englisch)
- Conditional (ternary) operator (MDN JavaScript reference; englisch)
- Loops and iteration (MDN JavaScript Guide; englisch)
- for (MDN JavaScript reference; englisch)
- while (MDN JavaScript reference; englisch)
- do...while (MDN JavaScript reference; englisch)
- for...of (MDN JavaScript reference; englisch)
- for...in (MDN JavaScript reference; englisch)
- break (MDN JavaScript reference; englisch)
- continue (MDN JavaScript reference; englisch)
- Labeled statement (MDN JavaScript reference; englisch)
- Functions (MDN JavaScript Guide; englisch)
- Functions - reusable blocks of code (MDN Learn web development; englisch)
- Build your own function (MDN Learn web development; englisch)
- function (MDN JavaScript reference; englisch)
- function expression (MDN JavaScript reference; englisch)
- TypeError: "x" is not a function (MDN JavaScript reference; englisch)
- Default parameters (MDN JavaScript reference; englisch)
- Rest parameters (MDN JavaScript reference; englisch)
- Spread syntax (...) (MDN JavaScript reference; englisch)
- Function return values (MDN Learn web development; englisch)
- return (MDN JavaScript reference; englisch)
- Arrow function expressions (MDN JavaScript reference; englisch)
- Closures (MDN JavaScript Guide; englisch)
- Scope (MDN Glossary; englisch)
- Indexed collections (MDN JavaScript Guide; englisch)
- Array.prototype.sort() (MDN JavaScript reference; englisch)
- Array.prototype.toSorted() (MDN JavaScript reference; englisch)
- Array.prototype.toReversed() (MDN JavaScript reference; englisch)
- Array.prototype.splice() (MDN JavaScript reference; englisch)
- Array.prototype.at() (MDN JavaScript reference; englisch)
- Array.prototype.find() (MDN JavaScript reference; englisch)
- Array.prototype.map() (MDN JavaScript reference; englisch)
- Array.prototype.filter() (MDN JavaScript reference; englisch)
- Array.prototype.reduce() (MDN JavaScript reference; englisch)
- TypeError: Reduce of empty array with no initial value (MDN JavaScript reference; englisch)
- Array.prototype.forEach() (MDN JavaScript reference; englisch)
- Array.prototype.some() (MDN JavaScript reference; englisch)
- Array.prototype.every() (MDN JavaScript reference; englisch)
- Working with objects (MDN JavaScript Guide; englisch)
- Destructuring (MDN JavaScript reference; englisch)
- Optional chaining (?.) (MDN JavaScript reference; englisch)
- Object.hasOwn() (MDN JavaScript reference; englisch)
- TypeError: 'x' is not iterable (MDN JavaScript reference; englisch)
- Working with JSON (MDN Learn web development; englisch)
- JSON.parse() (MDN JavaScript reference; englisch)
- JSON.stringify() (MDN; englisch)
- Array.isArray() (MDN JavaScript reference; englisch)
- try...catch (MDN; englisch)
- DOM scripting introduction (MDN Learn web development; englisch)
- Document: querySelector() method (MDN Web APIs; englisch)
- Document: querySelectorAll() method (MDN Web APIs; englisch)
- Document: getElementById() method (MDN Web APIs; englisch)
- Node: textContent property (MDN Web APIs; englisch)
- Element: getAttribute() method (MDN Web APIs; englisch)
- Element: setAttribute() method (MDN Web APIs; englisch)
- HTMLElement: dataset property (MDN Web APIs; englisch)
- DOMTokenList: toggle() method (MDN Web APIs; englisch)
- JavaScript modules (MDN JavaScript Guide; englisch)
- Document: createElement() method (MDN Web APIs; englisch)
- Element: append() method (MDN Web APIs; englisch)
- Element: prepend() method (MDN Web APIs; englisch)
- Element: remove() method (MDN Web APIs; englisch)
- Element: replaceChildren() method (MDN Web APIs; englisch)
- <template>: The Content Template element (MDN HTML reference; englisch)
- DocumentFragment (MDN Web APIs; englisch)
- Introduction to events (MDN Learn web development; englisch)
- EventTarget: addEventListener() method (MDN Web API reference; englisch)
- EventTarget: removeEventListener() method (MDN Web APIs; englisch)
- Event: currentTarget property (MDN Web APIs; englisch)
- KeyboardEvent: key property (MDN Web APIs; englisch)
- Element: input event (MDN Web APIs; englisch)
- HTMLInputElement: value property (MDN Web APIs; englisch)
- Event: preventDefault() method (MDN Web APIs; englisch)
- HTMLFormElement: requestSubmit() method (MDN Web APIs; englisch)
- HTMLCollection (MDN Web APIs; englisch)
- HTMLFormControlsCollection (MDN Web APIs; englisch)
- Event bubbling (MDN Learn web development; englisch)
- Event: eventPhase property (MDN Web APIs; englisch)
- Event: Event() constructor (MDN Web APIs; englisch)
- Event: target property (MDN Web APIs; englisch)
- Event: stopPropagation() method (MDN Web APIs; englisch)
- Element: closest() method (MDN Web APIs; englisch)
- Node: contains() method (MDN Web APIs; englisch)
- ARIA: aria-current attribute (MDN Accessibility; englisch)
- HTMLImageElement: alt property (MDN Web APIs; englisch)
- Keyboard event key values (MDN Web APIs; englisch)
- data: URLs (MDN URI reference; englisch)
- MDN: JavaScript execution model (englisch)
- Using promises (MDN JavaScript Guide; englisch)
- await (MDN JavaScript reference; englisch)
- async function (MDN JavaScript reference; englisch)
- MDN: Window.queueMicrotask() (englisch)
- Promise.all() (MDN JavaScript reference; englisch)
- Promise.allSettled() (MDN JavaScript reference; englisch)
- Introducing asynchronous JavaScript (MDN Learn web development; englisch)
- How to use promises: async and await (MDN Learn web development; englisch)
- Promise.prototype.then() (MDN JavaScript reference; englisch)
- Promise.prototype.finally() (MDN JavaScript reference; englisch)
- Promise.any() (MDN JavaScript reference; englisch)
- Promise.race() (MDN JavaScript reference; englisch)
- AggregateError (MDN; englisch)
- How to implement a promise-based API (MDN Learn; englisch)
- Promise() constructor (MDN JavaScript reference; englisch)
- Promise.withResolvers() (MDN JavaScript reference; englisch)
- Promise.try() (MDN JavaScript reference; englisch)
- util.parseArgs([config]) (Node.js v24 documentation; englisch)
- Timers Promises API (Node.js v24 documentation; englisch)
- process.argv and process.exitCode (Node.js v24 documentation; englisch)
- Window: setInterval() method (MDN Web APIs; englisch)
- Window: clearInterval() method (MDN Web APIs; englisch)
- HTMLButtonElement: disabled property (MDN Web APIs; englisch)
- Inheritance and the prototype chain (MDN JavaScript Guide; englisch)
- Object.create() (MDN JavaScript reference; englisch)
- Object.getPrototypeOf() (MDN JavaScript reference; englisch)
- Using classes (MDN JavaScript Guide; englisch)
- Classes (MDN JavaScript reference; englisch)
- constructor (MDN JavaScript reference; englisch)
- new (MDN JavaScript reference; englisch)
- instanceof (MDN JavaScript reference; englisch)
- extends (MDN JavaScript reference; englisch)
- super (MDN JavaScript reference; englisch)
- Private elements (MDN JavaScript reference; englisch)
- get (MDN JavaScript reference; englisch)
- set (MDN JavaScript reference; englisch)
- static (MDN JavaScript reference; englisch)
- throw (MDN; englisch)
- import (MDN JavaScript reference; englisch)
- export (MDN JavaScript reference; englisch)
- Modules: Packages (Node.js v24 documentation; englisch)
- Modules: ECMAScript modules (Node.js v24 documentation; englisch)
- npm-install (npm Docs, npm 11; englisch)
- package.json (npm Docs, npm 11; englisch)
- package-lock.json (npm Docs, npm 11; englisch)
- npm-ci (npm Docs, npm 11; englisch)
- npm-run (npm Docs, npm 11; englisch)
- scripts (npm Docs, npm 11; englisch)
- File system: fsPromises.readFile and writeFile (Node.js v24 documentation; englisch)
- Error (MDN; englisch)
- Error() constructor (MDN; englisch)
- Error: cause (MDN; englisch)
- console: trace() static method (MDN; englisch)
- console: assert() static method (MDN; englisch)
- Command-line API: --inspect-brk (Node.js v24 documentation; englisch)
- Test runner (Node.js v24 documentation; englisch)
- Assert (Node.js v24 documentation; englisch)
- Keyed collections (MDN JavaScript Guide; englisch)
- Map (MDN JavaScript reference; englisch)
- Set (MDN JavaScript reference; englisch)
- Map.groupBy() (MDN JavaScript reference; englisch)
- Map.prototype.getOrInsert() (MDN JavaScript reference; englisch)
- Object.fromEntries() (MDN JavaScript reference; englisch)
- Regular expressions (MDN JavaScript Guide; englisch)
- RegExp.escape() (MDN JavaScript reference; englisch)
- String.prototype.matchAll() (MDN JavaScript reference; englisch)
- String.prototype.replace() (MDN JavaScript reference; englisch)
- String.prototype.replaceAll() (MDN JavaScript reference; englisch)
- Named capturing group: (?<name>...) (MDN JavaScript reference; englisch)
- Representing dates & times (MDN JavaScript Guide; englisch)
- Date (MDN JavaScript reference; englisch)
- Date() constructor (MDN JavaScript reference; englisch)
- Date.UTC() (MDN JavaScript reference; englisch)
- Date.prototype.toISOString() (MDN JavaScript reference; englisch)
- Temporal (MDN JavaScript reference; englisch)
- Internationalization (MDN JavaScript Guide; englisch)
- Intl.NumberFormat() constructor (MDN JavaScript reference; englisch)
- Intl.DateTimeFormat() constructor (MDN JavaScript reference; englisch)
- Intl.RelativeTimeFormat() constructor (MDN JavaScript reference; englisch)
- Intl.PluralRules (MDN JavaScript reference; englisch)
- Intl.ListFormat (MDN JavaScript reference; englisch)
- Number.prototype.toLocaleString() (MDN JavaScript reference; englisch)
- RegExp.prototype.exec() (MDN JavaScript reference; englisch)
- Date.prototype.getUTCHours() (MDN JavaScript reference; englisch)
- Using the Fetch API (MDN; englisch)
- Window: fetch() method (MDN; englisch)
- Response: ok property (MDN; englisch)
- Response: json() method (MDN; englisch)
- Global objects: localStorage (Node.js v24 documentation; englisch)
- AbortSignal: timeout() static method (MDN; englisch)
- AbortSignal (MDN; englisch)
- AbortController (MDN; englisch)
- AbortSignal: any() static method (MDN; englisch)
- Client-side storage (MDN Learn; englisch)
- Window: localStorage property (MDN; englisch)
- Storage: getItem() method (MDN; englisch)
- Storage: setItem() method (MDN; englisch)
- Web Storage API (MDN; englisch)
- Window: storage event (MDN; englisch)
- IndexedDB API (MDN; englisch)