JavaScript typeof Array: Was es zurückgibt und wie man es richtig prüft

17. August 2026

Erfahren Sie, warum typeof für Arrays 'object' zurückgibt und wie Sie am besten prüfen, ob eine Variable in JavaScript ein Array ist – einschließlich Array.isArray().

Warum typeof für Arrays "object" zurückgibt

In JavaScript sind Arrays ein spezieller Typ von Objekten. Wenn du den `typeof`-Operator auf ein Array anwendest, gibt er den String `"object"` zurück und nicht etwa `"array"`. Dieses Verhalten verwirrt Entwickler oft, insbesondere diejenigen, die aus stark typisierten Sprachen kommen. Der Grund dafür ist, dass Arrays von `Object.prototype` erben und laut ECMAScript-Spezifikation technisch als Objekte klassifiziert werden. Wenn du also `typeof [1, 2, 3]` schreibst, erhältst du `"object"`. Diesen grundlegenden Punkt zu verstehen, ist der erste Schritt, um Arrays korrekt zu identifizieren. Du kannst dich nicht allein auf `typeof` verlassen, aber es gibt mehrere zuverlässige Alternativen, die du verwenden kannst.

Der Standardweg: Array.isArray()

Die einfachste und empfohlene Methode, um zu prüfen, ob ein Wert ein Array ist, ist `Array.isArray()`. Diese statische Methode gibt `true` zurück, wenn der übergebene Wert ein Array ist – unabhängig vom globalen Kontext. Zum Beispiel gibt `Array.isArray([1, 2, 3])` `true` zurück, während `Array.isArray({ length: 3 })` `false` zurückgibt. Im Gegensatz zu `instanceof` funktioniert `Array.isArray()` korrekt über Iframes und verschiedene JavaScript-Umgebungen hinweg, was es zum Goldstandard in der modernen Entwicklung macht. Ob du eine React-App oder ein Node.js-Backend entwickelst – die Verwendung von `Array.isArray()` ist der sauberste und vorhersehbarste Ansatz zur Array-Erkennung im Jahr 2026.

instanceof Array verwenden (und seine Fallstricke)

Eine weitere gängige Technik ist `value instanceof Array`, die prüft, ob ein Objekt irgendwo in der Prototypenkette des Konstruktors vorkommt. Sie funktioniert in den meisten Fällen, hat aber eine wesentliche Einschränkung: Sie versagt bei Arrays, die in einem anderen globalen Kontext erstellt wurden, etwa in einem Iframe oder einem separaten Node.js-Worker. So wird ein Array, das aus einem Iframe übergeben wird, von `instanceof Array` der übergeordneten Seite möglicherweise nicht erkannt. Dies kann in komplexen Anwendungen zu subtilen Fehlern führen. Während `instanceof Array` für einfache Single-Realm-Skripte ausreichend ist, solltest du für robusten Code `Array.isArray()` bevorzugen, insbesondere wenn du mit Daten von Drittanbietern oder eingebetteten Widgets arbeitest.

Arrays mit Object.prototype.toString prüfen

Eine fortgeschrittenere, aber äußerst zuverlässige Technik ist die Verwendung von `Object.prototype.toString.call(value)`. Diese Methode gibt einen String wie `"[object Array]"` für Arrays und `"[object Object]"` für einfache Objekte zurück. Sie funktioniert in allen JavaScript-Umgebungen, einschließlich Cross-Realm-Kontexten. Die Syntax ist etwas ausführlich, aber sie ist nützlich, wenn Sie spezifischere eingebaute Typen identifizieren müssen. Viele bekannte Bibliotheken und Polyfills verwenden diesen Ansatz im Hintergrund. Wenn Sie einen wiederverwendbaren Helfer wünschen, können Sie für volle Kontrolle eine Funktion wie `function isArray(value) { return Object.prototype.toString.call(value) === '[object Array]'; }` definieren, auch wenn `Array.isArray()` in den meisten Fällen die einfachere Wahl bleibt.

Praktische Beispiele und häufige Stolperfallen

Lassen Sie uns die Theorie anhand einiger typischer Szenarien in die Praxis umsetzen. Angenommen, Sie entwickeln eine für den britischen Markt bestimmte E-Commerce-Website und erhalten Produktdaten von einer API. Sie müssen sicherstellen, dass das Feld `variants` ein Array ist, bevor Sie `.map()` aufrufen. Die Verwendung von `Array.isArray(data.variants)` verhindert, dass Ihre Anwendung abstürzt. Ein weiterer Stolperstein: Wenn Sie in Node.js auf Arrays prüfen, denken Sie daran, dass `Buffer`-Instanzen ebenfalls Objekte sind, sodass `typeof` sie nicht unterscheidet. Verwenden Sie immer eine spezielle Prüfung. Beachten Sie außerdem, dass `arguments`-Objekte keine Arrays sind, auch wenn sie ähnlich aussehen. Modernes JavaScript bietet Rest-Parameter, um diese Verwirrung zu vermeiden, aber das Verständnis dieser Stolpersteine hält Ihren Code robust und fehlerfrei.

FAQ

Nein, der typeof-Operator gibt für Arrays immer „object" zurück. Das ist eine seit Langem bestehende Eigenheit von JavaScripts Design. Um Arrays korrekt zu identifizieren, müssen Sie Array.isArray() oder eine ähnliche Technik verwenden. Wenn Sie das wissen, ersparen Sie sich das Schreiben fehlerhafter Typüberprüfungslogik.

Neueste Ratgeber