Wir haben verschiedene Datentypen in JavaScript.
Primitive Typen: Zeichenfolge, Zahl, boolescher Wert, undefiniert, Null, Symbol und Bigint.
Referenztypen: Objekt, Funktion und Array.
Primitive Typen sind die grundlegendsten Datentypen in JavaScript. Sie sind unveränderlich. Dies bedeutet, dass ein einmal erstellter primitiver Wert nicht mehr geändert werden kann. Verwechseln Sie dies nicht mit der Neuzuweisung einer Variablen. Das Neuzuweisen einer Variablen ist nicht dasselbe wie das Ändern des Werts eines primitiven Typs.
let str = "hello"; str = "Hello"; // str -> "Hello"
In diesem Beispiel weisen wir der Variablen str einen neuen Wert zu. Das ist völlig in Ordnung.
let str1 = "hello"; let str2 = "hello";
Hier haben wir zwei Variablen, str1 und str2, die den gleichen Wert haben. Wenn in JavaScript zwei Grundwerte gleich sind, sind sie gleich. Sie sind gleich, weil unter der Haube beide Variablen auf denselben Speicherort verweisen.
Gleiche Zeichenfolgen werden im Speicher nicht neu erstellt. Sie werden nur einmal im Speicher gespeichert. JavaScript-Ingenieure verwenden eine Technik namens String-Interning, um die Speichernutzung zu optimieren. Diese Technik wird auch für Zahlen verwendet.
let str = "hello"; str[0] = "H"; // str -> "hello"
Sie können eine Zeichenfolge nicht mehr ändern, sobald sie erstellt wurde. In diesem Beispiel versuchen wir, das erste Zeichen der Zeichenfolge str in „H“ zu ändern. Das wird nicht funktionieren. Die Zeichenfolge str bleibt gleich. Primitive Typen sind unveränderlich.
Wenn Sie eine neue Zeichenfolge erstellen müssen, können Sie dies explizit tun:
let newStr = "H" + str.slice(1); // newStr -> "Hello"
Referenztypen sind veränderbar. Das bedeutet, dass Sie den Wert eines Referenztyps ändern können. Sie werden Referenztypen genannt, um hervorzuheben, dass sie als Referenzen im Speicher gespeichert sind. Obwohl Zeichenfolgen auch als Referenzen gespeichert werden, sind sie unveränderlich und verwenden die Internierungstechnik, um zu vermeiden, dass identische Werte im Speicher neu erstellt werden.
let obj1 = { name: "John" }; let obj2 = { name: "John" };
Hier sind obj1 und obj2 zwei verschiedene Objekte. Sie werden an verschiedenen Speicherorten gespeichert. Obwohl sie dieselben Eigenschaften und Werte haben, sind sie nicht gleich, da Objekte anhand ihrer Referenz und nicht anhand ihres Werts verglichen werden.
let obj1 = { name: "John" }; let obj2 = obj1;
Hier sind obj1 und obj2 dasselbe Objekt. Beide Variablen zeigen auf denselben Speicherort. Wenn Sie den Wert an dieser Stelle ändern, wird er in beiden Variablen widergespiegelt.
obj2.name = "Jane"; // obj1 -> { name: "Jane" }, obj2 -> { name: "Jane" }
Um zu visualisieren, wie dies in der Erinnerung aussehen würde:
Memory location 1: { name: "John" } obj1 -> Memory location 1 obj2 -> Memory location 1
Mit dem Update:
let str = "hello"; str = "Hello"; // str -> "Hello"
Wir haben den Wert in Speicherort 1 aktualisiert. Es ist nur natürlich, dass sowohl obj1 als auch obj2 diese Änderung widerspiegeln, da sie beide auf denselben Speicherort verweisen.
Primitive Typen sind unveränderlich und mit Techniken wie String-Internierung für die Speichernutzung optimiert, während Referenztypen durch Veränderbarkeit und gemeinsame Referenzen eine größere Flexibilität ermöglichen. Wenn Sie diese Konzepte beherrschen, können Sie das Verhalten Ihres Codes besser vorhersagen und steuern, was zu robusteren und wartbareren Anwendungen führt.
Das obige ist der detaillierte Inhalt vonVerschiedene Datentypen in JavaScript.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!