„Uncaught ReferenceError“ – Ihr erster Feind? Richtig auf undefined in JavaScript prüfen lernen
\n\nJeder, der auch nur ein paar Zeilen JavaScript geschrieben hat, ist auf das rätselhafte undefined gestoßen. Es ist nicht nur ein „leerer Platz“ – es ist ein vollwertiger Datentyp mit einem eigenen Wert. Aber wie fängt man ihn richtig ein? Wenn Sie „How can I check for undefined in JavaScript“ gegoogelt haben, sind Sie nicht allein: Diese Frage auf Stack Overflow hat Hunderttausende von Aufrufen gesammelt. Das Problem ist, dass es in JS mehrere Prüfmethoden gibt und jede ihre Tücken hat.
In diesem Artikel analysieren wir 5 Ansätze, vom Einfachen zum Komplexen, vergleichen ihre Leistung und Zuverlässigkeit und finden heraus, welche Methode man im Jahr 2025 verwenden sollte. Los geht‘s!
\n\nWas ist undefined eigentlich?
\n\nBevor wir prüfen, lassen Sie uns die Begriffe klären. undefined ist ein primitiver Wert, der einer Variablen zugewiesen wird, wenn sie deklariert, aber nicht initialisiert wurde:
let a;\nconsole.log(a); // undefined\n\n\nWichtig: undefined ≠ null ≠ not defined. null ist ein absichtliches „Nichts“, und not defined (ReferenceError) tritt auf, wenn die Variable überhaupt nicht deklariert wurde. Diese Nuancen sind entscheidend für die Wahl der richtigen Prüfung.
Methode Nr. 1: Der typeof-Operator – der Goldstandard?
\n\nDie beliebteste und sicherste Methode ist die Verwendung von typeof:
if (typeof x === 'undefined') {\n console.log('x ist nicht definiert');\n}\n\n\nWarum funktioniert das sogar für nicht deklarierte Variablen? typeof wirft niemals einen ReferenceError. Wenn die Variable nicht existiert, gibt es einfach den String "undefined" zurück.
Vorteile:
\n- \n
- Sicher für nicht deklarierte Variablen \n
- Lesbarer und verständlicher Code \n
- Funktioniert in allen Browsern und Umgebungen (Node.js, Deno) \n
Nachteile:
\n- \n
- Etwas lang für häufige Verwendung \n
- Kann Anfänger in die Irre führen (String-Vergleich) \n
Fazit: Beste Wahl für globale Prüfungen und Fälle, in denen die Variable möglicherweise nicht deklariert ist.
\n\nMethode Nr. 2: Strikter Vergleich mit undefined (===)
\n\nDie zweitbeliebteste Methode ist der direkte Vergleich des Werts:
\n\nif (x === undefined) {\n console.log('x ist gleich undefined');\n}\n\n\nHier gibt es eine Nuance: Die Variable muss deklariert sein. Wenn x nicht existiert, erhalten Sie einen ReferenceError. Daher ist dieser Code nur sicher für:
\n- \n
- Eigenschaften von Objekten (
obj.prop === undefined) \n - Parameter von Funktionen \n
- Variablen, die mit
let,constodervardeklariert wurden \n
Fallstrick: Globales undefined
\nIn alten Browsern (IE 8 und niedriger) konnte undefined überschrieben werden:
undefined = 'jetzt bin ich ein String'; // Albtraum!\n\nDas ist heute nicht mehr möglich (im strikten Modus), aber wenn Sie Legacy-Code unterstützen – verwenden Sie besser typeof.
Fazit: Hervorragende Methode für lokale Variablen und Objekteigenschaften. Schnell und prägnant.
\n\nMethode Nr. 3: Der void-Operator
\n\nEine wenig bekannte, aber elegante Methode ist void 0:
if (x === void 0) {\n console.log('x undefined');\n}\n\n\nDer void-Operator wertet einen Ausdruck aus und gibt undefined zurück. void 0 ist der kürzeste Weg, um ein reines undefined zu erhalten, das nicht von der globalen Variable abhängt.
Wann ist das nützlich?
\n- \n
- In minimiertem Code (spart Bytes) \n
- In Bibliotheken, bei denen der Schutz vor Überschreibung von
undefinedwichtig ist \n - In der funktionalen Programmierung (z. B. in Promise-Ketten) \n
Nachteil: Sieht seltsam aus