Kami mempunyai jenis data yang berbeza dalam JavaScript.
Jenis primitif: rentetan, nombor, boolean, tidak ditentukan, null, simbol dan bigint.
Jenis rujukan: objek, fungsi dan tatasusunan.
Jenis primitif ialah jenis data paling asas dalam JavaScript. Mereka tidak berubah. Ini bermakna bahawa apabila nilai primitif dicipta, ia tidak boleh diubah. Jangan mengelirukan ini dengan menetapkan semula pembolehubah. Menetapkan semula pembolehubah tidak sama dengan menukar nilai jenis primitif.
let str = "hello"; str = "Hello"; // str -> "Hello"
Dalam contoh ini, kami menugaskan semula pembolehubah str kepada nilai baharu. Ini sangat baik.
let str1 = "hello"; let str2 = "hello";
Di sini kita mempunyai dua pembolehubah, str1 dan str2, yang mempunyai nilai yang sama. Dalam JavaScript, jika dua nilai primitif adalah sama, ia adalah sama. Mereka adalah sama kerana di bawah hud, kedua-dua pembolehubah menghala ke lokasi memori yang sama.
Rentetan yang sama tidak dicipta semula dalam ingatan. Mereka disimpan dalam ingatan sekali sahaja. Jurutera JavaScript menggunakan teknik yang dipanggil string interning untuk mengoptimumkan penggunaan memori. Teknik ini juga digunakan untuk nombor.
let str = "hello"; str[0] = "H"; // str -> "hello"
Anda tidak boleh menukar rentetan setelah ia dibuat. Dalam contoh ini, kami cuba menukar aksara pertama rentetan str kepada "H." Ini tidak akan berfungsi. Str rentetan akan kekal sama. Jenis primitif tidak boleh diubah.
Jika anda perlu mencipta rentetan baharu, anda boleh melakukannya secara eksplisit:
let newStr = "H" + str.slice(1); // newStr -> "Hello"
Jenis rujukan boleh berubah. Ini bermakna anda boleh menukar nilai jenis rujukan. Ia dipanggil jenis rujukan untuk menyerlahkan bahawa ia disimpan sebagai rujukan dalam ingatan. Walaupun rentetan disimpan sebagai rujukan juga, ia tidak boleh diubah dan menggunakan teknik interning untuk mengelak daripada mencipta semula nilai yang sama dalam ingatan.
let obj1 = { name: "John" }; let obj2 = { name: "John" };
Di sini, obj1 dan obj2 ialah dua objek berbeza. Ia disimpan di lokasi memori yang berbeza. Walaupun ia mempunyai sifat dan nilai yang sama, ia tidak sama kerana objek dibandingkan dengan rujukan, bukan dengan nilai.
let obj1 = { name: "John" }; let obj2 = obj1;
Di sini, obj1 dan obj2 ialah objek yang sama. Kedua-dua pembolehubah menunjuk ke lokasi memori yang sama. Jika anda menukar nilai di lokasi ini, ia akan ditunjukkan dalam kedua-dua pembolehubah.
obj2.name = "Jane"; // obj1 -> { name: "Jane" }, obj2 -> { name: "Jane" }
Untuk menggambarkan bagaimana ini akan kelihatan dalam ingatan:
Memory location 1: { name: "John" } obj1 -> Memory location 1 obj2 -> Memory location 1
Dengan kemas kini:
let str = "hello"; str = "Hello"; // str -> "Hello"
Kami mengemas kini nilai dalam lokasi memori 1. Semestinya kedua-dua obj1 dan obj2 mencerminkan perubahan ini kerana kedua-duanya merujuk lokasi memori yang sama.
Jenis primitif tidak boleh diubah dan dioptimumkan untuk penggunaan ingatan dengan teknik seperti interning rentetan, manakala jenis rujukan membolehkan fleksibiliti yang lebih besar melalui kebolehubahan dan rujukan bersama. Dengan menguasai konsep ini, anda boleh meramal dan mengawal tingkah laku kod anda dengan lebih baik, yang membawa kepada aplikasi yang lebih mantap dan boleh diselenggara.
Atas ialah kandungan terperinci Jenis Data yang berbeza dalam JavaScript.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!