Sobes.tech
Junior

Was ist der Unterschied zwischen den verschiedenen Datentypen?

sobes.tech KI

Antwort von AI

In JavaScript werden Daten in primitive Typen und Objekte unterteilt.

Primitive Typen:

  • String: Zeichenkette. Unveränderlich.
  • Number: Zahlen, einschließlich Ganzzahlen und Gleitkommazahlen sowie Infinity, -Infinity und NaN.
  • Boolean: Logischer Wert (true oder false).
  • Null: Spezieller Wert, der das Fehlen eines Objekts darstellt.
  • Undefined: Wert einer Variablen, der kein Wert zugewiesen wurde.
  • Symbol: Einzigartiger und unveränderlicher primitiver Typ, der zur Identifikation von Objekteigenschaften verwendet wird.
  • BigInt: Ganzzahlen beliebiger Länge.

Objekte:

  • Object: Sammlung von Schlüssel-Wert-Paaren. Änderbar. Beispiele: Arrays, Funktionen, reguläre Ausdrücke, Daten.

Hauptunterschiede:

  1. Änderbarkeit (Mutability): Primitive Typen sind unveränderlich, d.h., ihr Wert kann nicht direkt geändert werden. Bei einem Änderungsversuch wird eine neue Kopie erstellt. Objekte sind änderbar, ihre Eigenschaften können hinzugefügt, entfernt und geändert werden.
  2. Wert- / Referenzübergabe: Primitive Typen werden nach Wert übergeben (der Wert selbst wird kopiert). Objekte werden nach Referenz übergeben (die Referenz auf den Speicherort, an dem das Objekt gespeichert ist, wird kopiert).
  3. Vergleich: Primitive Typen werden nach Wert verglichen. Objekte werden nach Referenz verglichen (zwei Variablen verweisen auf dasselbe Objekt im Speicher).
// Beispiele
let str1 = "hello";
let str2 = str1; // str2 erhält eine Kopie des Wertes von str1
str1 = "world"; // Es wird eine neue Zeichenkette "world" für str1 erstellt
console.log(str2); // "hello" - str2 hat sich nicht geändert

let obj1 = { name: "Alice" };
let obj2 = obj1; // obj2 erhält die Referenz auf dasselbe Objekt wie obj1
obj1.name = "Bob"; // Die Eigenschaft des referenzierten Objekts wird geändert
console.log(obj2.name); // "Bob" - obj2 hat sich geändert

let num1 = 10;
let num2 = 10;
console.log(num1 === num2); // true - Werte werden verglichen

let objA = { value: 1 };
let objB = { value: 1 };
console.log(objA === objB); // false - Referenzen werden verglichen (verschiedene Objekte, auch wenn sie den gleichen Inhalt haben)

Vergleichstabelle:

Merkmal Primitive Typen Objekte
Änderbarkeit Unveränderlich Änderbar
Übergabe Nach Wert Nach Referenz
Vergleich Nach Wert Nach Referenz
Speicherung Direkt in der Variablen Referenz auf Speicherort
Datentypen String, Number, Boolean, Null, Undefined, Symbol, BigInt Objekt (einschließlich Arrays, Funktionen usw.)