# JavaScript o'zgaruvchilar (let, const, var)

> JavaScript'da o'zgaruvchi yaratish: let va const farqi, nomlash qoidalari va var nega ishlatilmaydi. Qiymatni saqlash va o'zgartirishni amalda ko'ring.

Manba: https://learncode.uz/javascript/ozgaruvchilar/
Sana: 2026-05-25

Dastur ma'lumot bilan ishlaydi: foydalanuvchi ismi, mahsulot narxi, bosilgan
tugmalar soni. Bu qiymatlarni saqlab qo'yish va keyin nomi orqali ishlatish
uchun **o'zgaruvchi** yaratiladi.

## let — qiymati o'zgaradigan

`let` kalit so'zi bilan o'zgaruvchi yaratiladi:

```js
let name = "Aziz";
console.log(name);

name = "Dilnoza";
console.log(name);
```

Birinchi qatorda o'zgaruvchi **yaratildi**, uchinchida qiymati
**almashtirildi**. Ikkinchi marta `let` yozilmaydi — u faqat yaratishda kerak.

## const — o'zgarmaydigan

Agar qiymat butun dastur davomida bir xil qolishi kerak bo'lsa, `const`
ishlatiladi:

```js
const PI = 3.14159;
console.log(PI);

PI = 3;
```

Oxirgi qator xato beradi: `const` bilan e'lon qilingan qiymatni qayta
o'zlashtirib bo'lmaydi. Bu ataylab qilingan himoya — tasodifiy
o'zgartirishning oldini oladi.

> **Qaysi birini tanlash**
>
> **Doim `const` dan boshlang.** Agar keyin qiymatni o'zgartirish kerak bo'lsa,
> `let` ga o'ting. Bu odat kodni oldindan aytilishi mumkin qiladi: `const`
> ko'rgan odam bu qiymat o'zgarmasligini biladi.

## Nomlash qoidalari

O'zgaruvchi nomi:

- harf, raqam, `_` va `$` belgilaridan iborat bo'ladi;
- raqam bilan **boshlanmaydi**: `1price` — xato, `price1` — to'g'ri;
- katta-kichik harfni ajratadi: `name` va `Name` — ikki xil o'zgaruvchi;
- kalit so'z bo'la olmaydi: `let`, `const`, `if` kabi.

Kelishilgan uslub — **camelCase**: birinchi so'z kichik, keyingilari bosh
harf bilan.

```js
const userName = "Aziz";
const productPrice = 15000;
const orderCount = 3;

console.log(userName, productPrice, orderCount);
```

## Yaxshi nom tanlash

Nom o'zgaruvchida nima turganini izohsiz aytishi kerak:

```js
// Yomon — nima ekani noaniq
let a = 15000;
let x = "Aziz";

// Yaxshi — nomdan mazmun ko'rinadi
let price = 15000;
let customerName = "Aziz";
```

Kodni siz bir marta yozasiz, lekin o'nlab marta o'qiysiz — shuning uchun
aniq nom vaqt tejaydi.

## var — eski usul

Eski kodda `var` uchraydi. U `let` ga o'xshaydi, lekin qamrov qoidalari
chalkash va kutilmagan xatolarga olib keladi. Qamrov nima ekani
[scope va closure](https://learncode.uz/javascript/scope-closure) darsida batafsil ochiladi.

> **var ishlatmang**
>
> Yangi kodda `var` ishlatilmaydi. U tilda faqat eski saytlar buzilmasligi
> uchun saqlanib qolgan. `let` va `const` 2015-yilda qo'shilgan va bugun
> standart hisoblanadi.

## Bir nechta o'zgaruvchi

Qiymatlarni bir-biriga bog'lash ham mumkin:

```js
const price = 12000;
const qty = 3;
const total = price * qty;

console.log("Jami:", total);
```

`total` hisoblangan paytdagi qiymatni saqlaydi. Keyin `qty` o'zgarsa ham,
`total` o'z-o'zidan yangilanmaydi — uni qayta hisoblash kerak.

## Amaliy mashq

O'z profilingizni yarating:

1. `const` bilan `name` va `birthYear` o'zgaruvchilarini yarating;
2. `let` bilan `age` yarating va uni `2026 - birthYear` dan hisoblang;
3. uchalasini bitta `console.log` da chiqaring;
4. `name` ga yangi qiymat berishga urinib ko'ring — qanday xato chiqadi?
5. `age` ni o'zgartiring — bu ishladimi?

4 va 5-qadam `const` bilan `let` farqini aniq ko'rsatadi.

## Qisqacha xulosa

- **O'zgaruvchi** — qiymatga berilgan nom.
- `let` — qiymati keyin o'zgarishi mumkin.
- `const` — qiymat qayta o'zlashtirilmaydi; standart tanlov shu.
- Nom raqam bilan boshlanmaydi, katta-kichik harf ajratiladi, **camelCase** ishlatiladi.
- `var` — eski usul, yangi kodda ishlatilmaydi.

Keyingi darsda [ma'lumot turlari](https://learncode.uz/javascript/malumot-turlari) — matn, son va
mantiqiy qiymatlarni ko'ramiz.
