check for null in javascript

check for null in javascript

Es war drei Uhr morgens an einem Dienstag, als das Telefon klingelte. Ein Onlineshop eines mittelständischen Kunden aus München stand still. Der Warenkorb ließ sich nicht mehr öffnen. Der Grund? Ein simpler Check For Null In Javascript, der in einer tief verschachtelten API-Antwort versagte. Ein Entwickler hatte angenommen, dass ein optionales Feld entweder existiert oder eben null ist. Stattdessen kam undefined zurück, und die Anwendung quittierte den Dienst mit dem berüchtigten "TypeError: Cannot read property of null". In den zwei Stunden, die wir brauchten, um den Fehler zu finden und den Hotfix auszurollen, verlor der Kunde knapp 15.000 Euro an Umsatz. Solche Nächte habe ich oft erlebt. Sie sind das Resultat von Nachlässigkeit und dem falschen Vertrauen in einfache Vergleiche, die in der Theorie funktionieren, aber in der harten Realität von unsauberen Datenstrukturen kläglich versagen.

Die tödliche Falle der losen Gleichheit beim Check For Null In Javascript

Einer der häufigsten Fehler, den ich in Code-Reviews sehe, ist die Verwendung des doppelten Gleichheitszeichens. Viele denken, sie seien clever, wenn sie if (variable == null) schreiben, um gleichzeitig auf null und undefined zu prüfen. Das ist riskant. In einem Projekt für ein Logistikunternehmen führte genau diese Schreibweise dazu, dass die Zahl 0 fälschlicherweise als fehlender Wert interpretiert wurde. LKWs wurden nicht beladen, weil das System dachte, die Anzahl der Paletten sei "nicht definiert", obwohl sie schlicht Null war.

Wer diesen Mechanismus nutzt, spielt russisches Roulette mit seinen Datentypen. JavaScript ist eine Sprache, die versucht, einem den Hintern zu retten, indem sie Typen eigenmächtig umwandelt. Das führt dazu, dass leere Strings oder die Zahl Null plötzlich in Logikpfade rutschen, für die sie nie gedacht waren. Ich habe Entwickler gesehen, die Tage damit verbracht haben, Geisterfehler zu jagen, nur weil sie zu faul waren, drei Gleichheitszeichen zu tippen oder eine explizite Typprüfung einzubauen. Es gibt in der professionellen Entwicklung keinen Platz für "wird schon passen". Wer nicht präzise prüft, zahlt später mit technischer Schuld.

Warum typeof null eine Beleidigung für die Logik ist

Man sollte meinen, dass man mit typeof sicher fahren kann. Doch wer sich auf typeof variable === 'object' verlässt, um ein Objekt von einem Null-Wert zu unterscheiden, fällt auf einen der ältesten Fehler in der Geschichte der Sprache herein. Seit den Anfängen von JavaScript gibt typeof null den String 'object' zurück. Das ist kein Feature, das ist ein historischer Unfall, der niemals korrigiert wurde, um alte Webseiten nicht zu zerstören.

Ich erinnere mich an ein Team in Berlin, das eine komplexe Datenvisualisierung baute. Sie prüften auf Objekte, um Rekursionen zu starten. Da null als Objekt durchging, rannte der Algorithmus immer wieder in Sackgassen. Die Lösung ist simpel, wird aber oft ignoriert: Man muss zuerst prüfen, ob der Wert überhaupt existiert, bevor man seinen Typ bestimmt. Wer das ignoriert, baut instabile Brücken. Ein professioneller Entwickler weiß, dass die Sprache Macken hat, und schreibt seinen Code so, dass diese Macken gar nicht erst zum Tragen kommen.

📖 Verwandt: sie benutzen auf ihrer

Optionale Verkettung ist kein Freifahrtschein für schlechtes Design

Der Optional Chaining Operator ?. wird oft als das Allheilmittel gefeiert. "Einfach ein Fragezeichen setzen, dann stürzt nichts ab", heißt es oft. Das ist eine gefährliche Mentalität. Ich habe gesehen, wie ganze Dashboards "leer" blieben, ohne eine Fehlermeldung zu werfen, weil Entwickler an jeder Stelle die Verkettung nutzten. Der Fehler wurde unter den Teppich gekehrt, anstatt ihn zu behandeln.

Die Gefahr der lautlosen Fehler

Wenn eine Anwendung einfach nur nichts anzeigt, anstatt kontrolliert abzustürzen oder eine Fehlermeldung auszugeben, ist das für den Nutzer frustrierend und für den Support ein Albtraum. Ein stiller Fehlschlag ist oft teurer als ein lauter Knall. Wenn Daten fehlen, die zwingend erforderlich sind, darf man sie nicht mit ?. wegignorieren. Man muss entscheiden: Was passiert, wenn dieser Wert nicht da ist? Gibt es einen Standardwert? Muss der Nutzer informiert werden? Wer einfach nur Abstürze verhindern will, ohne die Geschäftslogik dahinter zu verstehen, produziert Software, die unvorhersehbar reagiert.

Vorher und Nachher: Von der Ratestunde zur Präzision

Schauen wir uns an, wie sich ein typischer Prozess in der Praxis verändert, wenn man von amateurhaften Prüfungen zu einem professionellen System übergeht.

Früher sah der Code oft so aus: Ein Entwickler erhielt ein Benutzerobjekt von einer API. Er wollte auf die Postleitzahl der Adresse zugreifen. Er schrieb eine lange Kette von Prüfungen oder, schlimmer noch, verließ sich darauf, dass das Objekt schon die richtige Struktur haben würde. Wenn die Adresse fehlte, warf das Skript einen Fehler aus. Die Anwendung fror ein. Der Nutzer sah nur einen weißen Bildschirm. Der Entwickler musste danach mühsam Logs durchforsten, um herauszufinden, welcher Teil der Kette null war. Das kostete wertvolle Zeit in der Fehleranalyse.

💡 Das könnte Sie interessieren: diesen Artikel

Heute sieht der Ansatz anders aus. Anstatt im Blindflug auf tief liegende Eigenschaften zuzugreifen, wird das Objekt direkt nach dem Empfang validiert. Wir nutzen Schemata oder kleine Hilfsfunktionen, die sicherstellen, dass alle benötigten Felder vorhanden sind. Wenn etwas fehlt, wird ein Standardobjekt eingesetzt oder eine spezifische Fehlermeldung protokolliert, die genau sagt: "Feld X in Objekt Y fehlt". Der Code ist dadurch vielleicht drei Zeilen länger, aber er ist unzerstörbar. In einem konkreten Fall reduzierte diese Umstellung die Fehlerrate in einem Kundenportal um 40 Prozent innerhalb eines einzigen Sprints.

Die Arroganz der Annahme bei API-Antworten

Viele Entwickler arbeiten nach dem Motto: "Die API wird schon liefern, was dokumentiert ist." Das ist naiv. APIs werden von Menschen geschrieben, und Menschen machen Fehler. Oder die API wird aktualisiert, und plötzlich ist ein Feld, das immer da war, optional oder wird zu null.

In einem Projekt für einen Finanzdienstleister brach die Zinsberechnung zusammen, weil die Datenbank für einen bestimmten Nutzertyp plötzlich null statt 0.0 lieferte. Die Frontend-Logik war darauf nicht vorbereitet. Man muss sich angewöhnen, jede externe Datenquelle als potenziell korrupt zu betrachten. Das bedeutet, dass man nicht nur prüft, ob ein Wert da ist, sondern auch, ob er den erwarteten Typ hat. Ein leerer String ist kein null, und undefined ist nicht dasselbe wie ein fehlender Key. Wer diese Unterschiede verwischt, baut sich eine Zeitbombe.

Der Realitätscheck: Was es wirklich braucht

Am Ende des Tages ist sauberer Code kein Zufallsprodukt, sondern das Ergebnis von Disziplin. Es gibt keine Abkürzung, die dich davor bewahrt, über deine Datenstrukturen nachzudenken. Wer glaubt, dass ein paar Tools oder neue Syntax-Features die Arbeit für ihn erledigen, wird immer wieder in die "Null-Falle" tappen.

In meiner Laufbahn habe ich gelernt, dass die besten Systeme diejenigen sind, die explizit mit dem Fehlen von Werten rechnen. Das bedeutet:

  1. Akzeptiere, dass null und undefined zwei verschiedene Dinge sind und behandle sie so.
  2. Verlasse dich niemals auf implizite Typumwandlungen.
  3. Validiere Daten an den Grenzen deines Systems – dort, wo sie von außen reinkommen.
  4. Nutze statische Typisierung wie TypeScript, aber verstehe, dass auch das dich zur Laufzeit nicht rettet, wenn die Daten von einer API kommen.

Es ist nun mal so: Softwareentwicklung ist zu 20 Prozent Logik und zu 80 Prozent Fehlerbehandlung. Wer das nicht einsieht, wird weiterhin Nächte damit verbringen, Fehler zu suchen, die man mit einer ordentlichen Prüfung in fünf Sekunden hätte verhindern können. Es geht nicht um Eleganz, sondern um Vorhersehbarkeit. Dein Ziel sollte es sein, dass dein Code langweilig ist – weil er einfach funktioniert, egal was für ein Müll in die Variablen gekippt wird. Das spart Zeit, schont die Nerven und am Ende des Jahres auch das Budget deines Arbeitgebers oder Kunden.

Es braucht eine gewisse Demut vor der Komplexität. Wer meint, er hätte alles im Griff und brauche keine Absicherungen, hat wahrscheinlich noch nie ein System betreut, das von Tausenden Menschen gleichzeitig genutzt wird. Dort zeigt sich erst, wie stabil die Basis wirklich ist. Und meistens ist es eben ein kleiner, vergessener Check, der das ganze Kartenhaus zum Einsturz bringt. Sei derjenige, der die extra Meile geht und den Code wasserfest macht. Es zahlt sich aus. Immer.

NW

Nina Wagner

Nina Wagner verbindet redaktionelle Sorgfalt mit erzählerischer Klarheit und macht relevante Themen greifbar.