„Ist das ein String?“ – eine Frage, die jeden JavaScript-Entwickler quält
Sie schreiben Code und plötzlich halten Sie inne. Eigentlich sollte die Variable einen String enthalten, aber was, wenn dort ein null gelandet ist? Oder eine Zahl? Oder, noch schlimmer, undefined?
Kommt Ihnen das bekannt vor? Wenn ja, sind Sie nicht allein. Die Frage „Check if a variable is a string in JavaScript“ ist eine der beliebtesten auf Stack Overflow mit Zehntausenden von Aufrufen. Und das ist kein Zufall: JavaScript ist eine Sprache mit dynamischer Typisierung, und Typfehler passieren selbst erfahrenen Entwicklern.
In diesem Artikel werden wir alle möglichen Methoden zur Überprüfung, ob eine Variable ein String ist, durchgehen. Sie erfahren:
- Warum
typeofIhr bester Freund ist (aber nicht immer) - Wann
instanceofversagt - Wie die „Scharfschützen“-Methode
Object.prototype.toStringfunktioniert - Und was zu tun ist, wenn Sie Bibliotheken verwenden
Los geht‘s! 🚀
Methode Nr. 1: typeof – der Klassiker
Der einfachste und schnellste Weg ist der typeof-Operator. Er gibt einen String mit dem Typnamen zurück:
const name = "Alice";const age = 25;const isAdmin = true;
console.log(typeof name); // "string"console.log(typeof age); // "number"console.log(typeof isAdmin); // "boolean"Die Prüfung auf einen String sieht so aus:
if (typeof variable === "string") { console.log("Ja, das ist ein String!");}Vorteile:
- Schnell
- Kein Import erforderlich
- Lesbar
Nachteile:
- Unterscheidet nicht zwischen dem primitiven
"string"und dem Objektnew String("string") - Gibt für
null"object"zurück (historischer JavaScript-Fehler)
Übrigens, zu null – das ist ein bekannter Sprachfehler, der nicht mehr behoben wird, um alte Websites nicht zu beschädigen. Also typeof null === "object" ist normal.
Und was ist mit new String()?
In JavaScript gibt es zwei Arten von Strings: primitive (normale) und Objekt-Strings (erstellt mit new String()). In der Praxis werden Sie fast nie new String() verwenden, aber es ist gut, davon zu wissen:
const primitiveString = "Hallo";const objectString = new String("Hallo");
console.log(typeof primitiveString); // "string"console.log(typeof objectString); // "object"Wenn in Ihrem Code jemand (oder etwas) einen Objekt-String übergibt, wird typeof Sie täuschen. Aber keine Sorge: In realen Projekten kommt das selten vor.
Methode Nr. 2: instanceof – für Objekt-Strings
Der instanceof-Operator prüft, ob ein Objekt eine Instanz einer bestimmten Klasse ist:
const str = new String("Test");console.log(str instanceof String); // true
const str2 = "Test";console.log(str2 instanceof String); // false – weil es ein primitiver Wert istWie Sie sehen, funktioniert instanceof nicht mit primitiven Strings. Daher wird es selten verwendet – nur wenn Sie genau wissen, dass Sie mit Objekten arbeiten.
Wann könnte es nützlich sein? Wenn Sie eine Bibliothek schreiben, die sowohl primitive Werte als auch Objekte akzeptiert. Aber für 99% der Fälle reicht typeof aus.
Methode Nr. 3: Object.prototype.toString.call() – der Alleskönner
Diese Methode ist ein echter Scharfschütze. Sie funktioniert für alle Datentypen und macht nie Fehler:
function isString(value) { return Object.prototype.toString.call(value) === "[object String]";}
console.log(isString("Hallo")); // trueconsole.log(isString(new String("Hallo"))); // trueconsole.log(isString(123)); // falseconsole.log(isString(null)); // falseconsole.log(isString(undefined)); // false
Blogs
Buchempfehlungen
Lesen Sie auch
Reflexion und Introspektion in PHP: Code verstehen und optimieren
So bestehst du das C++-Vorstellungsgespräch: Top-Fragen für Fortgeschrittene
PHP Fatal Error: Allowed Memory Size — Mythen entlarven und konfigurieren
Mikroservices in Rust: Architektur und Praxis für Einsteiger
Refactoring von Legacy-Code in Go: Ein vollständiger Leitfaden von A bis Z