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,-InfinityundNaN. - Boolean: Logischer Wert (
trueoderfalse). - 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:
- Ä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.
- 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).
- 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.) |