Ursprünglich "Mocha", dann "LiveScript", dann "JavaScript" (Marketing!)
ECMAScript = offizieller Standard
Aktuelle Version: ES2024
V8 = Googles JS-Engine, macht JS schnell
Node.js = JavaScript außerhalb des Browsers
ES6 = großes Update mit vielen Features
Externe Datei = wiederverwendbar, cachebar
Script am Ende = DOM ist fertig geladen
Oder: defer-Attribut
Console = REPL (Read-Eval-Print-Loop)
Perfekt zum Experimentieren
Fehler werden hier auch angezeigt
let = für Werte die sich ändern
const = für Konstanten (Standardwahl!)
var = alte Syntax, hat Scoping-Probleme
typeof prüft den Typ
Template Literals mit Backticks!
Index startet bei 0!
Arrays sind veränderbar auch bei const
Key-Value-Paare, Punkt- oder Bracket-Notation
=== strikt (Typ + Wert)
== loose (nur Wert) – VERMEIDEN!
"5" == 5 ist true, "5" === 5 ist false
function = klassische Syntax
Arrow Functions = modern, kürzer
Bedingung in Klammern
Code-Block in geschweiften Klammern
for = Anzahl bekannt, for...of = Arrays, forEach = Array-Methode
Funktionale Programmierung, Original-Array bleibt unverändert
DOM = Programmierschnittstelle für HTML
document = Wurzel des Baums
Jedes Element ist ein Objekt
getElementById = schnellste Methode
querySelector = CSS-Selektor (flexibel!)
querySelectorAll = alle Treffer
textContent = nur Text
innerHTML = HTML interpretieren
style = Inline-Styles (camelCase!)
classList = moderne API
Besser als className direkt ändern
toggle schaltet hin und her
createElement = Element im Speicher
appendChild = in DOM einfügen
remove = aus DOM entfernen
Event = Ereignis
Event Handler = Reaktion darauf
Interaktive Webseiten durch Events
addEventListener = moderne Methode
Mehrere Listener pro Element möglich
Erstes Argument = Event-Typ
Zweites Argument = Callback-Funktion
Viele weitere Events verfügbar
MDN für vollständige Liste
event = automatisch übergeben
Enthält Infos über das Event
target = auslösendes Element
preventDefault = Standardverhalten stoppen
Wichtig für SPAs und AJAX
Formular-Validierung ohne Reload
Klassisches UI-Pattern
Kein Neuladen der Seite
State in Klasse gespeichert
Ausführlicher:
1. Dark Mode Toggle
- Button der Klasse auf `body` toggelt
- CSS für `.dark-mode`
2. Accordion/FAQ
- Klick auf Frage → Antwort erscheint/verschwindet
- Tipp: classList.toggle() + CSS display: none/block
3. Formular-Validierung (entfernt - passt nicht zum Kurskontext)
- Prüft ob Felder ausgefüllt
- Zeigt Fehlermeldung
Fetch = HTTP-Requests aus JS
Frameworks für größere Apps
Node.js für Backend
APIs = Schnittstellen zu Daten, JSON = JavaScript Object Notation
Daten bleiben nach Browser-Neustart, nur Strings → JSON.stringify/parse
Frameworks für größere Apps, Komponenten-basiert