Data Types แบ่งออกเป็น 2 ประเภทหลักๆ คือ Primitive Data Types และ Reference Data Types
Primitive Data Types คือ "ประเภทข้อมูลพื้นฐานที่เก็บค่าอย่างง่ายและไม่สามารถแยกย่อยได้อีก โดยเก็บค่าโดยตรงในหน่วยความจำ"
Reference Data Types คือ "ประเภทข้อมูลที่ซับซ้อน ซึ่งเก็บการอ้างอิงไปยังตำแหน่งในหน่วยความจำที่เก็บค่าจริงของข้อมูล สามารถประกอบด้วยข้อมูลหลายค่าหรือหลายประเภท"
Primitive Data Types vs Reference Data Types
ลักษณะ | Primitive Type | Reference Type |
---|---|---|
การจัดเก็บ | เก็บค่าโดยตรงในหน่วยความจำ | เก็บที่อยู่ (address) ในหน่วยความจำ |
การเปลี่ยนแปลง | ไม่สามารถเปลี่ยนแปลงได้ (Immutable)* | สามารถเปลี่ยนแปลงได้ (Mutable) |
การเปรียบเทียบ | เปรียบเทียบค่าโดยตรง | เปรียบเทียบที่อยู่ในหน่วยความจำ |
ขนาด | ขนาดคงที่ (Fixed size) | ขนาดไม่คงที่ (Dynamic size) |
ประสิทธิภาพ | เร็วกว่าในการเข้าถึงและดำเนินการ | อาจช้ากว่าในการเข้าถึงและดำเนินการ |
ตัวอย่างประเภท | Number, String, Boolean, Null, Undefined, Symbol, BigInt | Object, Array, Function, Date, RegExp, Map, Set |
การส่งค่าในฟังก์ชัน | ส่งค่า (Pass by value) | ส่งที่อยู่ (Pass by reference) |
ในกรณีของ String ใน JavaScript แม้จะเป็น Primitive Type แต่มีพฤติกรรมคล้าย Immutable Object
// TODO