Tutorials › Nachschlagen

Befehlsübersicht

Alles aus den sechzehn Kapiteln an einer Stelle, nach Themen geordnet. Zum Nachschlagen, wenn man den Namen vergessen hat.

Werte und Variablen

Schreibweise Bedeutung
const x = 1 fester Name, Wert nicht neu zuweisbar
let x = 1 Name, der neu belegt werden darf
typeof x liefert den Typ als Text
Array.isArray(x) prüft, ob es eine Liste ist
Number(x) wandelt in eine Zahl, sonst NaN
String(x) wandelt in Text
Boolean(x) wandelt in wahr oder falsch
Number.isNaN(x) einzig verlässliche Prüfung auf NaN
structuredClone(x) vollständige Kopie über alle Ebenen

Als falsch gelten: false, 0, "", null, undefined, NaN. Alles andere gilt als wahr.

Nachzulesen in Kapitel 3.

Operatoren

Schreibweise Bedeutung
=== / !== Vergleich ohne Typumwandlung, immer diesen nehmen
== / != Vergleich mit Typumwandlung, vermeiden
&& / || / ! und, oder, nicht
?? Ersatzwert nur bei null und undefined
?. bricht ab, statt bei fehlender Ebene zu stürzen
a ? b : c Kurzform für eine Entscheidung
% Rest einer Division
** Potenz
+= -= *= /= rechnen und zuweisen in einem
...x Array oder Objekt auseinandernehmen

Nachzulesen in Kapitel 4.

Text

Aufruf Was herauskommt
s.length Anzahl Zeichen
s.slice(a, b) Ausschnitt, b gehört nicht dazu
s.at(-1) letztes Zeichen
s.includes(t) enthält t?
s.indexOf(t) Position oder -1
s.startsWith(t) / s.endsWith(t) Anfang oder Ende prüfen
s.toLowerCase() / s.toUpperCase() Groß- und Kleinschreibung
s.trim() Leerraum an beiden Enden weg
s.split(t) zu einem Array zerlegen
arr.join(t) Array zu Text zusammensetzen
s.replaceAll(a, b) alle Vorkommen tauschen
s.padStart(n, z) vorn auffüllen
`Hallo ${name}` Werte in Text einsetzen
[...s] nach echten Zeichen zerlegen

Reguläre Ausdrücke: /muster/.test(s), s.match(/muster/g), s.replace(/muster/g, ersatz). Bausteine: \d Ziffer, \s Leerraum, \w Wortzeichen, ^ Anfang, $ Ende, + mindestens einmal, * beliebig oft, {2,4} zwei bis vier.

Nachzulesen in Kapitel 9.

Zahlen

Aufruf Was herauskommt
Math.round(x) kaufmännisch gerundet
Math.floor(x) / Math.ceil(x) ab- und aufrunden
Math.abs(x) Betrag
Math.min(...) / Math.max(...) kleinster und größter Wert
Math.sqrt(x) Wurzel
Math.random() Kommazahl von 0 bis knapp unter 1
x.toFixed(2) Text mit zwei Nachkommastellen
parseInt(s) / parseFloat(s) Zahl aus gemischtem Text
x.toLocaleString("de-DE") deutsche Schreibweise
crypto.getRandomValues(arr) Zufall für sicherheitsrelevante Zwecke

Ganze Zufallszahl zwischen von und bis einschließlich:

Math.floor(Math.random() * (bis - von + 1)) + von

Nachzulesen in Kapitel 10.

Arrays

Aufruf Verändert das Original? Was herauskommt
a.push(x) / a.pop() ja anhängen, letztes entnehmen
a.unshift(x) / a.shift() ja vorn anfügen, erstes entnehmen
a.splice(i, n) ja n Einträge ab Position i entfernen
a.sort(fn) / a.reverse() ja sortieren, umdrehen
a.map(fn) nein neue Liste, jeder Eintrag umgewandelt
a.filter(fn) nein neue Liste, nur passende Einträge
a.reduce(fn, start) nein ein einziger Wert
a.find(fn) / a.findIndex(fn) nein erster Treffer oder undefined
a.some(fn) / a.every(fn) nein wahr oder falsch
a.includes(x) nein wahr oder falsch
a.slice(i, j) nein Ausschnitt
a.join(t) nein Text
[...a] nein flache Kopie

Zahlen sortieren: a.sort((x, y) => x - y). Deutschen Text sortieren: a.sort((x, y) => x.localeCompare(y, "de")).

Nachzulesen in Kapitel 7.

Objekte

Aufruf Was herauskommt
o.feld / o["feld"] Wert lesen oder setzen
"feld" in o gibt es das Feld?
delete o.feld Feld entfernen
Object.keys(o) Liste der Feldnamen
Object.values(o) Liste der Werte
Object.entries(o) Liste aus Paaren
Object.fromEntries(paare) Paare zurück zu einem Objekt
{ ...o } flache Kopie
const { a, b } = o Felder in eigene Variablen holen
JSON.stringify(o) Objekt zu Text
JSON.parse(text) Text zu Objekt

Nachzulesen in Kapitel 8.

Datum

Aufruf Was herauskommt
new Date() jetzt
new Date(2026, 7, 30) Monat zählt ab null, hier August
new Date("2026-08-30") aus Text, nur dieses Format ist sicher
Date.now() Millisekunden seit 1970
d.getFullYear() Jahr
d.getMonth() Monat, 0 bis 11
d.getDate() Tag im Monat, 1 bis 31
d.getDay() Wochentag, 0 ist Sonntag
d.setDate(d.getDate() + 7) eine Woche weiter
d.toLocaleDateString("de-DE") deutsches Datum
d.toISOString().slice(0, 10) für <time datetime="...">
performance.now() genaue Zeitmessung seit Seitenaufruf
setInterval(fn, ms) / clearInterval(id) wiederholt aufrufen, abstellen
setTimeout(fn, ms) / clearTimeout(id) einmal später aufrufen, abstellen

Nachzulesen in Kapitel 11.

Die Seite verändern

Aufruf Was herauskommt
document.getElementById(id) ein Element oder null
document.querySelector(sel) erster Treffer per CSS-Selektor
document.querySelectorAll(sel) alle Treffer
el.textContent = t Text setzen, sicher
el.innerHTML = t Markup setzen, nie mit Fremdeingaben
document.createElement(tag) neues Element, noch nicht eingehängt
el.append(a, b) / el.appendChild(a) einhängen
el.remove() aus dem Dokument nehmen
el.classList.add/remove/toggle(k) Klassen schalten
el.dataset.name liest data-name
el.closest(sel) nächstes passendes Element nach oben
document.createDocumentFragment() Sammelbehälter für viele Elemente

Nachzulesen in Kapitel 12.

Ereignisse

Aufruf Bedeutung
el.addEventListener(name, fn) Zuhörer anmelden
el.addEventListener(name, fn, { once: true }) nur einmal reagieren
el.removeEventListener(name, fn) abmelden, braucht dieselbe Funktion
e.target Element, auf dem es ausgelöst wurde
e.preventDefault() eingebaute Reaktion unterdrücken
e.stopPropagation() Aufsteigen nach oben stoppen
e.key / e.code Taste als Zeichen oder als Position

Häufige Namen: click, input, change, submit, keydown, keyup, mouseenter, mouseleave, scroll, DOMContentLoaded.

Nachzulesen in Kapitel 13.

Formulare

Aufruf Bedeutung
form.elements.name.value Wert eines Feldes, immer Text
form.elements.name.checked Zustand von Kästchen und Optionsfeldern
new FormData(form) alle Felder auf einmal
Object.fromEntries(new FormData(form)) daraus ein Objekt
feld.validity.valueMissing Pflichtfeld leer
feld.validity.tooShort zu kurz
form.checkValidity() prüft alles auf einmal
feld.focus() Eingabemarke setzen

Prüfattribute im HTML: required, minlength, maxlength, min, max, pattern, type="email", type="url".

Speicher: localStorage.setItem(k, v), getItem(k), removeItem(k), clear(). Speichert nur Text und wirft in privaten Fenstern eine Ausnahme, deshalb in try einpacken.

Nachzulesen in Kapitel 14.

Canvas

Aufruf Bedeutung
canvas.getContext("2d") Zeichenwerkzeug holen
s.fillRect(x, y, b, h) gefülltes Rechteck
s.strokeRect(x, y, b, h) umrandetes Rechteck
s.clearRect(x, y, b, h) Bereich löschen
s.beginPath() neuen Pfad beginnen
s.arc(x, y, r, a1, a2) Kreisbogen, Winkel in Bogenmaß
s.moveTo(x, y) / s.lineTo(x, y) Linienzug
s.fill() / s.stroke() Pfad füllen oder zeichnen
s.fillStyle / s.strokeStyle Farben
s.lineWidth Strichstärke
s.font / s.fillText(t, x, y) Text zeichnen
requestAnimationFrame(fn) nächstes Bild anfordern

Voller Kreis: Math.PI * 2. Grad in Bogenmaß: grad * Math.PI / 180.

Nachzulesen in Kapitel 15.

Warten

Aufruf Bedeutung
new Promise((fertig, scheitert) => ...) eigenes Promise bauen
p.then(fn) / p.catch(fn) / p.finally(fn) Kette
async function f() {} Funktion, die await erlaubt
await p anhalten, bis das Promise fertig ist
Promise.all([...]) alle gleichzeitig, scheitert beim ersten Fehler
Promise.allSettled([...]) alle gleichzeitig, meldet jedes Ergebnis
fetch(adresse) Netzwerkanfrage
antwort.ok war der Statuscode im Erfolgsbereich?
antwort.json() Rumpf als Objekt lesen
AbortSignal.timeout(ms) Frist für eine Anfrage

fetch scheitert nicht bei 404 oder 500. Immer antwort.ok prüfen.

Nachzulesen in Kapitel 16.

Skripte einbinden

<script src="datei.js" defer></script>
<script type="module" src="haupt.js"></script>

defer für den Normalfall. type="module" zusätzlich für eigenen Namensraum und import, braucht aber einen Webserver statt eines Doppelklicks.

Nachzulesen in Kapitel 2.