Data Types (Primitive vs Reference)
JavaScript'da Primitive va Reference data type'larini o'rganing: ularning farqi, xotira modeli va qanday ishlashini tushuning.
6-dars
🧠 Data Types (Primitive vs Reference)
1️⃣ JavaScript'da 2 xil data type bor
🟢 Primitive
stringnumberbooleannullundefinedsymbolbigint
Primitive — bu:
- Oddiy qiymat
- Xotirada bevosita saqlanadi
🔵 Reference || Nonprimitive (Object type)
objectarrayfunction
Reference — bu:
- Xotirada obyekt saqlanadi
- Variable esa uning manzilini ushlab turadi
2️⃣ Primitive qanday ishlaydi?
let a = 5;
let b = a;
b = 10;
Natija:
a = 5
b = 10
Nega?
Chunki primitive qiymat copy qilinadi.
Memory modeli (soddalashtirilgan):
a → 5
b → 5 (alohida joy)
Har bir variable o'z qiymatiga ega.
3️⃣ Object qanday ishlaydi?
let obj1 = { name: "Ali" };
let obj2 = obj1;
obj2.name = "Vali";
Natija:
obj1.name → "Vali"
obj2.name → "Vali"
Nega?
Chunki:
obj1 → (heap manzili 0x123)
obj2 → (shu manzil 0x123)
Ikkalasi bir obyektga qarab turibdi.
🔥 Eng muhim tushuncha
- Primitive → value copy
- Reference → address copy
4️⃣ Qiziq savol
let a = { x: 1 };
let b = a;
a = { x: 2 };
console.log(b.x);
Nima chiqadi?
Ko'pchilik bu yerda adashadi.
Javob:
1
Tushuntirish:
let a = { x: 1 }; // a → obyekt manzili 0x123
let b = a; // b → shu manzil 0x123
a = { x: 2 }; // a → yangi obyekt manzili 0x456
// b hali ham 0x123'ga qarab turibdi
console.log(b.x); // 1 (eski obyekt)
Muhim: a = { x: 2 } yangi obyekt yaratadi va a yangi manzilga o'zgaradi. b esa eski manzilni saqlab qoladi.
5️⃣ Nega bu muhim?
const obj = { x: 1 };
obj.x = 2; // ishlaydi ✅
Chunki:
const reference'ni muzlatadi, object'ni emas.
const obj = { x: 1 };
obj.x = 2; // ✅ ishlaydi
obj = { x: 3 }; // ❌ TypeError: Assignment to constant variable
📊 Xulosa
| Xususiyat | Primitive | Reference |
|---|---|---|
| Saqlash | Bevosita qiymat | Manzil (address) |
| Copy qilish | Qiymat nusxalanadi | Manzil nusxalanadi |
| O'zgartirish | Bir-biriga ta'sir qilmaydi | Bir-biriga ta'sir qiladi |
| Xotira | Stack | Heap |
💡 Amaliy maslahatlar
- Primitive'lar — oddiy qiymatlar, copy qilinganda yangi qiymat yaratiladi
- Reference'lar — obyektlar, copy qilinganda bir xil obyektga ishora qiladi
constbilan object — obyekt ichidagi qiymatlarni o'zgartirish mumkin, lekin yangi obyektga qayta tayinlash mumkin emas
🔍 Qo'shimcha misol
// Primitive misol
let num1 = 10;
let num2 = num1;
num2 = 20;
console.log(num1); // 10 (o'zgarmadi)
// Reference misol
let arr1 = [1, 2, 3];
let arr2 = arr1;
arr2.push(4);
console.log(arr1); // [1, 2, 3, 4] (o'zgardi!)
📝 Xulosa
- JavaScript'da 2 xil data type: Primitive va Reference
- Primitive — oddiy qiymatlar, value copy
- Reference — obyektlar, address copy
constreference'ni muzlatadi, lekin obyekt ichidagi qiymatlarni o'zgartirish mumkin- Primitive'lar stack'da, Reference'lar heap'da saqlanadi