Einleitung: Warum diese Aufgabe einfacher ist, als sie scheint
\n\nJeder Entwickler, der mindestens einmal in JavaScript geschrieben hat, stand vor der Situation, in der er prüfen musste, ob ein String leer ist oder ob es vielleicht null oder undefined ist. Man sollte meinen, was könnte einfacher sein? Aber seien wir ehrlich: Wie oft haben Sie if (str == "") geschrieben und einen Fehler erhalten, wenn die Variable null war? Und wie oft haben Sie versucht, .trim() auf undefined aufzurufen und einen roten Fehler in der Konsole erhalten?
Dieses Thema ist eine der beliebtesten Fragen auf Stack Overflow mit Zehntausenden von Aufrufen. Und das zu Recht. In JavaScript gibt es viele Nuancen, die eine einfache Prüfung in ein Minenfeld verwandeln. In diesem Artikel werden wir alle möglichen Methoden analysieren, von den offensichtlichsten bis hin zu professionellen, und herausfinden, welche Sie in Ihrem Projekt am besten verwenden sollten.
\n\nWir werden darüber sprechen, was falsy-Werte sind, wie die Operatoren == und === funktionieren und warum "" und 0 nicht dasselbe sind wie false. Am Ende des Artikels werden Sie genau wissen, wie Sie eine universelle Prüfung schreiben, die nicht versagt.
Das Problem: Was gilt als "leerer" String?
\n\nBevor wir Code schreiben, müssen wir klar definieren, was wir prüfen. Im Kontext der Frage "How do I check for an empty/undefined/null string in JavaScript?" meinen wir normalerweise drei Zustände:
\n\n- \n
- Leerer String (
""oder'') — ein String der Länge null. \n - null — absichtliches Fehlen eines Wertes. \n
- undefined — Variable wurde deklariert, aber nicht initialisiert. \n
Es gibt aber auch einen vierten, impliziten Fall: ein String, der nur aus Leerzeichen besteht (" "). Aus Sicht der Geschäftslogik wird dieser oft auch als "leer" betrachtet. Wir werden alle Varianten analysieren.
Methode 1: Logische Umwandlung (die einfachste)
\n\nDie beliebteste und prägnanteste Methode ist die Nutzung der Tatsache, dass JavaScript Werte in einem booleschen Kontext automatisch in true oder false umwandelt.
\n\nlet str = "";\n\nif (!str) {\n console.log("Der String ist leer, null oder undefined");\n} else {\n console.log("Der String ist nicht leer");\n}\n\n\nDieser Code funktioniert für "", null, undefined, 0, NaN und false. Warum? Weil alle diese Werte in JavaScript als falsy gelten. Wenn Sie sicher sind, dass die Variable ein String ist (oder null/undefined sein kann), reicht diese Methode aus.
Es gibt jedoch einen Haken: Wenn die Variable gleich 0 (eine Zahl) ist, sagt die Prüfung ebenfalls "leer". Wenn dies kritisch ist, ist diese Methode nicht geeignet.
Methode 2: Strikter Vergleich (explizite Kontrolle)
\n\nWenn Sie maximal genau sein und nur die drei genannten Zustände prüfen möchten, verwenden Sie den strikten Vergleich (===).
function isEmptyOrNull(str) {\n return str === "" || str === null || str === undefined;\n}\n\nconsole.log(isEmptyOrNull("")); // true\nconsole.log(isEmptyOrNull(null)); // true\nconsole.log(isEmptyOrNull(undefined)); // true\nconsole.log(isEmptyOrNull("hello")); // false\nconsole.log(isEmptyOrNull(0)); // false (Zahl wird nicht erfasst)\n\n\nDieser Code funktioniert ohne Überraschungen. Er verwechselt 0 oder false nicht mit einem leeren String. Er behandelt jedoch keine Strings, die nur aus Leerzeichen bestehen.
Methode 3: Trim + Prüfung (für "echte" Leerheit)
\n\nOft geben Benutzer Leerzeichen in ein Formular ein, und der String " " sieht visuell leer aus. Um auch solche Fälle abzufangen, müssen Sie die Leerzeichen mit der Methode .trim() entfernen.
function isBlank(str) {\n return !str || str.trim() === "";\n}\n\nconsole