Optional Chaining (?.) und Nullish Coalescing (??) in JavaScript
„Cannot read properties of undefined" gehört zu den häufigsten JS-Fehlern. Mit ?. greifst du sicher auf tief verschachtelte Felder zu, mit ?? setzt du saubere Standardwerte – und vermeidest die klassische ||-Falle bei 0 und "".
Kaum ein Fehler nervt im Frontend so oft wie Cannot read properties of undefined. Er passiert, wenn du auf ein Feld eines Objekts zugreifst, das gar nicht da ist. Zwei kleine Operatoren räumen damit auf.
Optional Chaining: ?.
const daten = await res.json();
// Ohne ?. kracht es, wenn "user" oder "adresse" fehlt:
const stadt = daten.user.adresse.stadt; // 💥
// Mit ?. bricht die Kette sauber ab und liefert undefined:
const stadt = daten?.user?.adresse?.stadt; // undefined statt Absturz?. prüft bei jedem Schritt: Ist der Wert null oder undefined, stoppt die Kette und gibt undefined zurück, statt zu werfen. Funktioniert auch bei Methoden (obj.fn?.()) und Arrays (liste?.[0]).
Nullish Coalescing: ??
const anzahl = daten?.count ?? 10; // 10 nur, wenn count null/undefined ist?? liefert den rechten Wert nur, wenn links null oder undefined steht. Das ist der wichtige Unterschied zu ||:
const menge = eingabe.wert || 10; // ⚠️ bei wert = 0 kommt 10 heraus!
const menge = eingabe.wert ?? 10; // ✅ 0 bleibt 0|| betrachtet auch 0, "" und false als „leer" und ersetzt sie. Wenn 0 oder ein leerer String gültige Werte sind, ist ?? die richtige Wahl.
Zusammen die Alltagszeile
const titel = seite?.meta?.title ?? "Ohne Titel";Diese beiden Operatoren ersparen mir defensive if-Kaskaden und eine ganze Sorte Laufzeitfehler. Mehr JavaScript-Snippets auf code.bymw.de.
Quellen
Du brauchst mehr als ein Snippet?
Ich entwickle Android-Apps in Kotlin und moderne Websites für Selbstständige und kleine Unternehmen — von der ersten Idee bis zum Release.
Projekt anfragen →Verwandte Snippets
Web Worker – rechnen, ohne die Oberfläche einzufrieren
JavaScript hat im Browser genau einen Faden für alles: Klicks, Animationen, Layout – und deine Rechenschleife. Dauert die zwei Sekunden, ist die Seite zwei Sekunden lang tot. Ein Worker nimmt die Arbeit auf einen eigenen Faden.
Formulare ohne Neuladen abschicken – FormData und fetch
Ein Formular per JavaScript abzuschicken heißt nicht, jedes Feld einzeln auszulesen. FormData nimmt das ganze Formular, fetch schickt es weg – inklusive Dateien, und mit einer Fehlermeldung, die der Besucher versteht.
CustomEvent – Bausteine, die sich gegenseitig Bescheid sagen, ohne sich zu kennen
Sobald zwei Teile einer Seite aufeinander reagieren sollen, landet man schnell bei globalen Variablen oder Funktionsaufrufen quer durchs Projekt. Eigene Events entkoppeln das – mit denselben Mitteln, die der Browser selbst benutzt.