Series: JavaScript Basics Lesson 6

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

  1. string
  2. number
  3. boolean
  4. null
  5. undefined
  6. symbol
  7. bigint

Primitive — bu:

  • Oddiy qiymat
  • Xotirada bevosita saqlanadi

🔵 Reference || Nonprimitive (Object type)

  • object
  • array
  • function

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

  1. Primitive'lar — oddiy qiymatlar, copy qilinganda yangi qiymat yaratiladi
  2. Reference'lar — obyektlar, copy qilinganda bir xil obyektga ishora qiladi
  3. const bilan 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
  • const reference'ni muzlatadi, lekin obyekt ichidagi qiymatlarni o'zgartirish mumkin
  • Primitive'lar stack'da, Reference'lar heap'da saqlanadi