Überprüfung des Typs string in JavaScript: Der vollständige Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

„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 typeof Ihr bester Freund ist (aber nicht immer)
  • Wann instanceof versagt
  • Wie die „Scharfschützen“-Methode Object.prototype.toString funktioniert
  • 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 Objekt new 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 ist


Wie 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