25 август 2025

O'zgaruvchilar

Ko’pincha JavaScript ilovasi ma’lumotlar bilan ishlashi kerak. Mana ikkita misol:

  1. Onlayn do’kon – ma’lumotlar sotiladigan tovarlar va xarid savatchasini o’z ichiga olishi mumkin.
  2. Chat ilovasi – ma’lumotlar foydalanuvchilar, xabarlar va boshqa ko’p narsalarni o’z ichiga olishi mumkin.

O’zgaruvchilar bu ma’lumotlarni saqlash uchun ishlatiladi.

O’zgaruvchi

O’zgaruvchi – bu ma’lumotlar uchun “nomli xotira”. Biz o’zgaruvchilardan tovarlar, tashrif buyuruvchilar va boshqa ma’lumotlarni saqlash uchun foydalanishimiz mumkin.

JavaScript da o’zgaruvchi yaratish uchun let kalit so’zidan foydalaning.

Quyidagi bayonot “message” nomli o’zgaruvchini yaratadi (boshqacha qilib aytganda: e’lon qiladi):

let message;

Endi biz unga tayinlash operatori = yordamida ma’lumot kiritishimiz mumkin:

let message;

message = 'Hello'; // 'Hello' stringini message nomli o'zgaruvchiga saqlash

String endi o’zgaruvchi bilan bog’langan xotira maydoniga saqlandi. Biz unga o’zgaruvchi nomi orqali murojaat qilishimiz mumkin:

let message;
message = 'Hello!';

alert(message); // o'zgaruvchi mazmunini ko'rsatadi

Qisqalik uchun biz o’zgaruvchini e’lon qilish va tayinlashni bitta satrga birlashtirishimiz mumkin:

let message = 'Hello!'; // o'zgaruvchini aniqlash va qiymat berish

alert(message); // Hello!

Shuningdek, bir satrda bir nechta o’zgaruvchini e’lon qilishimiz mumkin:

let user = 'John', age = 25, message = 'Hello';

Bu qisqaroq ko’rinishi mumkin, ammo biz buni tavsiya qilmaymiz. Yaxshiroq o’qish uchun har bir o’zgaruvchi uchun alohida satr ishlatishni so’raymiz.

Ko’p satrli variant biroz uzunroq, ammo o’qish osonroq:

let user = 'John';
let age = 25;
let message = 'Hello';

Ba’zi odamlar ko’p satrli uslubda bir nechta o’zgaruvchilarni aniqlaydi:

let user = 'John',
  age = 25,
  message = 'Hello';

Yoki hatto “vergul-birinchi” uslubida:

let user = 'John'
  , age = 25
  , message = 'Hello';

Texnik jihatdan, bu variantlarning barchasi bir xil ishni bajaradi. Demak, bu shaxsiy did va estetika masalasi.

let o’rniga var

Eski skriptlarda siz boshqa kalit so’zni ham topishingiz mumkin: let o’rniga var:

var message = 'Hello';

var kalit so’zi let bilan deyarli bir xil. U ham o’zgaruvchini e’lon qiladi, ammo biroz boshqacha, “eski maktab” usulida.

let va var orasida nozik farqlar bor, ammo ular bizga hali muhim emas. Biz ularni Eski "var" bobida batafsil ko’rib chiqamiz.

Hayotiy o’xshashlik

Agar uni ma’lumotlar uchun “quti” sifatida tasavvur qilsak, unda noyob nomlangan stiker yopishtirilgan bo’lsa, “o’zgaruvchi” tushunchasini osongina tushunishimiz mumkin.

Masalan, message o’zgaruvchisini ichida "Hello!" qiymati bo’lgan "message" yorlig’i bilan qutiga o’xshatish mumkin:

Biz qutiga istalgan qiymatni qo’yishimiz mumkin.

Shuningdek, uni xohlagancha marta o’zgartirishimiz mumkin:

let message;

message = 'Hello!';

message = 'World!'; // qiymat o'zgartirildi

alert(message);

Qiymat o’zgartirilganda, eski ma’lumotlar o’zgaruvchidan olib tashlanadi:

Shuningdek, biz ikkita o’zgaruvchini e’lon qilishimiz va biridan ikkinchisiga ma’lumotlarni nusxalashimiz mumkin.

let hello = 'Hello world!';

let message;

// 'Hello world' ni hello dan message ga nusxalash
message = hello;

// endi ikkita o'zgaruvchi bir xil ma'lumotni saqlaydi
alert(hello); // Hello world!
alert(message); // Hello world!
Ikki marta e’lon qilish xatolikka olib keladi

O’zgaruvchi faqat bir marta e’lon qilinishi kerak.

Bir xil o’zgaruvchining takroriy e’lon qilinishi xato hisoblanadi:

let message = "This";

// takroriy 'let' xatolikka olib keladi
let message = "That"; // SyntaxError: 'message' has already been declared

Demak, biz o’zgaruvchini bir marta e’lon qilishimizdan keyin unga let ishlatmasdan murojaat qilishimiz kerak.

Funksional tillar

Qiziq tomoni shundaki, sof funksional dasturlash tillari mavjud, masalan Haskell, ular o’zgaruvchi qiymatlarini o’zgartirishni taqiqlaydi.

Bunday tillarda qiymat “qutiga” saqlangandan so’ng, u abadiy u yerda qoladi. Agar biz boshqa narsani saqlashimiz kerak bo’lsa, til bizni yangi quti yaratishga (yangi o’zgaruvchi e’lon qilishga) majbur qiladi. Eskisini qayta ishlatib bo’lmaydi.

Dastlabki qarashda biroz g’alati tuyulishi mumkin bo’lsa-da, bu tillar jiddiy ishlanmaga juda qodir. Bundan tashqari, parallel hisoblashlar kabi sohalar mavjud bo’lib, bu cheklov ma’lum afzalliklarni beradi.

O'zgaruvchilarni nomlash

JavaScript da o’zgaruvchi nomlari uchun ikkita cheklov mavjud:

  1. Nom faqat harflar, raqamlar yoki $ va _ belgilarini o’z ichiga olishi kerak.
  2. Birinchi belgi raqam bo’lmasligi kerak.

To’g’ri nomlar misollari:

let userName;
let test123;

Nom bir nechta so’zdan iborat bo’lganda, odatda camelCase dan foydalaniladi. Ya’ni: so’zlar ketma-ket keladi, birinchisidan tashqari har bir so’z bosh harf bilan boshlanadi: myVeryLongName.

Qiziq tomoni – dollar belgisi '$' va pastki chiziq '_' ham nomlarda ishlatilishi mumkin. Ular oddiy belgilar, xuddi harflar kabi, hech qanday maxsus ma’nosiz.

Bu nomlar to’g’ri:

let $ = 1; // "$" nomli o'zgaruvchi e'lon qilindi
let _ = 2; // va endi "_" nomli o'zgaruvchi

alert($ + _); // 3

Noto’g’ri o’zgaruvchi nomlari misollari:

let 1a; // raqam bilan boshlanishi mumkin emas

let my-name; // defislar '-' nomda ruxsat etilmagan
Katta-kichik harflar muhim

apple va APPLE nomli o’zgaruvchilar ikki xil o’zgaruvchidir.

Lotin bo’lmagan harflarga ruxsat berilgan, ammo tavsiya etilmaydi

Kirill harflari, xitoy logogrammalar va hokazo har qanday tildan foydalanish mumkin:

let имя = '...';
let 我 = '...';

Texnik jihatdan bu yerda xato yo’q. Bunday nomlar ruxsat etilgan, ammo o’zgaruvchi nomlarida ingliz tilidan foydalanish xalqaro konventsiya hisoblanadi. Kichik skript yozsak ham, uning oldida uzoq hayot bo’lishi mumkin. Boshqa mamlakatlardan odamlar uni o’qishlari kerak bo’lishi mumkin.

Zaxiralangan nomlar

Tilning o’zi tomonidan ishlatiladigan zaxiralangan so’zlar ro’yxati mavjud, ularni o’zgaruvchi nomi sifatida ishlatib bo’lmaydi.

Masalan: let, class, return va function zaxiralangan.

Quyidagi kod sintaksis xatosini beradi:

let let = 5; // o'zgaruvchini "let" deb nomlab bo'lmaydi, xato!
let return = 5; // uni "return" deb ham nomlab bo'lmaydi, xato!
use strict ishlatishdan tayinlash

Odatda, o’zgaruvchini ishlatishdan oldin uni aniqlashimiz kerak. Ammo eski davrlarda let ishlatmasdan shunchaki qiymat tayinlash orqali o’zgaruvchi yaratish texnik jihatdan mumkin edi. Bu eski skriptlar bilan muvofiqlikni ta’minlash uchun skriptlarimizga use strict qo’ymasak, hali ham ishlaydi.

// e'tibor bering: bu misolda "use strict" yo'q

num = 5; // agar "num" o'zgaruvchisi mavjud bo'lmasa, u yaratiladi

alert(num); // 5

Bu yomon amaliyot va qattiq rejimda xatolikka olib keladi:

"use strict";

num = 5; // xato: num aniqlanmagan

Konstantalar

O’zgarmas (o’zgarmaydigan) o’zgaruvchini e’lon qilish uchun let o’rniga const dan foydalaning:

const myBirthday = '18.04.1982';

const yordamida e’lon qilingan o’zgaruvchilar “konstanta” deb ataladi. Ularni qayta tayinlab bo’lmaydi. Bunga urinish xatolikka olib keladi:

const myBirthday = '18.04.1982';

myBirthday = '01.01.2001'; // xato, konstantani qayta tayinlab bo'lmaydi!

Dasturchi o’zgaruvchi hech qachon o’zgarmasligiga ishonchi komil bo’lsa, bu faktni kafolatlash va hammaga etkazish uchun uni const bilan e’lon qilishi mumkin.

Bosh harfli konstantalar

Bajarilishdan oldin ma’lum bo’lgan, eslab qolish qiyin bo’lgan qiymatlar uchun takma nom sifatida konstantalardan foydalanish keng tarqalgan amaliyot.

Bunday konstantalar bosh harflar va pastki chiziqlar yordamida nomlanadi.

Masalan, “veb” (o’n oltilik) formatda ranglar uchun konstantalar yarataylik:

const COLOR_RED = "#F00";
const COLOR_GREEN = "#0F0";
const COLOR_BLUE = "#00F";
const COLOR_ORANGE = "#FF7F00";

// ...rang tanlashimiz kerak bo'lganda
let color = COLOR_ORANGE;
alert(color); // #FF7F00

Foydalar:

  • COLOR_ORANGE ni "#FF7F00" dan ko’ra yodlash osonroq.
  • "#FF7F00" da COLOR_ORANGE ga qaraganda xato qilish osonroq.
  • Kodni o’qiyotganda COLOR_ORANGE #FF7F00 dan ko’ra ancha mazmunli.

Konstanta uchun qachon bosh harflardan foydalanishimiz va qachon oddiy nomlashimiz kerak? Keling, buni aniqlashtiriruylik.

“Konstanta” bo’lish shunchaki o’zgaruvchining qiymati hech qachon o’zgarmasligini anglatadi. Ammo ba’zi konstantalar bajarilishdan oldin ma’lum (qizil uchun o’n oltilik qiymat kabi) va ba’zi konstantalar ish vaqtida, bajarilish davomida hisoblanadi, lekin boshlang’ich tayinlashdan keyin o’zgarmaydi.

Masalan:

const pageLoadTime = /* veb-sahifa yuklanish vaqti */;

pageLoadTime ning qiymati sahifa yuklanishidan oldin ma’lum emas, shuning uchun u oddiy nomlanadi. Ammo bu hali ham konstanta, chunki tayinlashdan keyin o’zgarmaydi.

Boshqacha qilib aytganda, bosh harfli konstantalar faqat “qattiq kodlangan” qiymatlar uchun takma nom sifatida ishlatiladi.

Narsalarni to’g’ri nomlash

O’zgaruvchilar haqida gapirganda, yana bir juda muhim narsa bor.

O’zgaruvchi nomi toza, aniq ma’noga ega bo’lishi va u saqlaydigan ma’lumotlarni tasvirlashi kerak.

O’zgaruvchilarni nomlash dasturlashtirining eng muhim va murakkab ko’nikmalaridan biridir. O’zgaruvchi nomlariga bir qarash yangi boshlovchi yoki tajribali dasturchi tomonidan yozilgan kodni aniqlash mumkin.

Haqiqiy loyihada vaqtning ko’p qismi noldan butunlay alohida narsa yozishdan ko’ra mavjud kod bazasini o’zgartirish va kengaytirishga sarflanadi. Bir muddat boshqa ish bilan shug’ullanganimizdan keyin qandaydir kodga qaytsak, yaxshi belgilangan ma’lumotni topish ancha oson. Boshqacha qilib aytganda, o’zgaruvchilarning yaxshi nomlari bo’lganda.

O’zgaruvchini e’lon qilishdan oldin uning to’g’ri nomi haqida o’ylashga vaqt ajrating. Buni qilish sizga katta foyda keltiradi.

Bajarilishi kerak bo’lgan qoidalar:

  • userName yoki shoppingCart kabi inson o’qiy oladigan nomlardan foydalaning.
  • Nima qilayotganingizni bilmasangiz, a, b va c kabi qisqartmalar yoki qisqa nomlardan qoching.
  • Nomlarni maksimal darajada tavsiflovchi va qisqa qiling. Yomon nomlar misollari data va value. Bunday nomlar hech narsa demaydi. Ularni faqat kod konteksti o’zgaruvchi qaysi ma’lumot yoki qiymatga ishora qilayotganini juda aniq qilsa ishlatish mumkin.
  • Jamoangizdagi va fikringizdagi atamalar bo’yicha kelishing. Agar sayt tashrif buyuruvchisi “user” deb atalsa, biz tegishli o’zgaruvchilarni currentVisitor yoki newManInTown o’rniga currentUser yoki newUser deb nomlashimiz kerak.

Oddiy eshitiladimi? Haqiqatan ham shunday, ammo amalda tavsiflovchi va qisqa o’zgaruvchi nomlari yaratish unchalik oson emas. Harakat qiling.

Qayta ishlatish yoki yaratish?

Va oxirgi eslatma. Ba’zi dangasa dasturchilar yangi o’zgaruvchilar e’lon qilish o’rniga mavjudlarini qayta ishlatishga moyil.

Natijada, ularning o’zgaruvchilari odamlar stikerlarini o’zgartirmasdan turli narsalarni tashlaydigan qutilarga o’xshaydi. Qutida hozir nima bor? Kim biladi? Yaqinroq kelib tekshirishimiz kerak.

Bunday dasturchilar o’zgaruvchi e’lon qilishda ozgina tejashadi, ammo disk raskadrovkada o’n barobar ko’proq yo’qotishadi.

Qo’shimcha o’zgaruvchi yaxshi, yomon emas.

Zamonaviy JavaScript minifikatorlari va brauzerlar kodni yetarlicha yaxshi optimallashtiradi, shuning uchun bu ishlash muammolarini yaratmaydi. Turli qiymatlar uchun turli o’zgaruvchilardan foydalanish hatto dvigatelga kodingizni optimallashtirashda yordam berishi mumkin.

Xulosa

Biz var, let yoki const kalit so’zlari yordamida ma’lumotlarni saqlash uchun o’zgaruvchilar e’lon qilishimiz mumkin.

  • let – zamonaviy o’zgaruvchi e’loni.
  • var – eski maktab o’zgaruvchi e’loni. Odatda biz uni umuman ishlatmaymiz, ammo agar kerak bo’lsa, Eski "var" bobida let dan nozik farqlarni ko’rib chiqamiz.
  • constlet ga o’xshaydi, ammo o’zgaruvchining qiymatini o’zgartirib bo’lmaydi.

O’zgaruvchilar ichida nima borligini osongina tushunishga imkon beradigan tarzda nomlanishi kerak.

Vazifalar

  1. Ikki o’zgaruvchini e’lon qiling: admin va name.
  2. John qiymatini name ga belgilang.
  3. name ni qiymatini admin ga ko’chiring.
  4. alert yordamida admin qiymatini ko’rsating (“John” chiqishi kerak).

Quyidagi kodda har bir satr vazifa ro’yxatidagi elementga mos keladi.

let admin, name; // ikki o'zgaruvchini birdaniga e'lon qilish mumkin

name = "John";

admin = name;

alert( admin ); // "John"
muhimlik: 3
  1. Sayyoramiz nomi bilan o’zgaruvchan yarating. Bunday o’zgaruvchani qanday nomlaysiz?
  2. Veb-saytga joriy tashrif buyurganing nomini saqlash uchun o’zgaruvchan yarating. Ushbu o’zgaruvchanga qanday nom bergan bo’lardingiz?

Birinchidan, bizning sayyoramiz nomi uchun o’zgaruvchi.

Bu oddiy:

let ourPlanetName = "Earth"; // ourPlanetName bu ingliz tilidan bizning saroyamizning ismi degani Earth esa bu Yer

E’tibor bering, biz qisqaroq planet(sayyora) nomini ishatishimiz mumkin edi, ammo u qaysi sayyorani nazarda tutayotganini aniq bilish mumkin emas. Aniqroq bo’lgani yaxshi. Agar o’zgaruvhi judaUzunO’zgaruvchi bo’lmasa.

The name of the current visitor

let currentUserName = "John"; // currentUser bu ingliz tilidan joriy foydalanuvchining ismi degani

Yana, biz qizqaroq userName(foydalanuvchining ismi) nomini ishlatishimiz mumkin edi, agar biz bu foydalanuvchi aniq joriyligini bilsak.

Zamonaviy muharrirlar va avtomatik to’ldiruvchilar uzun o’zgaruvchilar nomlarini yozishni osonlashtiradi. Ulardan tejamang. 3 ta so’zdan iborat ism yaxshi.

Agar sizning muharriringiz tegishli avtomatik to’ldirishga ega bo’lmasa, yangisini yuklab oling.

muhimlik: 4

Quyidagi kodni tekshiring:

const birthday = '18.04.1982'; // tug'ilgan kun

const age = someCode(birthday); // yosh

Bu erda bizda doimiy birthday sanasi mavjud va age ba’zi kodlar yordamida birthday dan hisoblab chiqilgan (bu qisqartirish uchun ko’rsatilmagan, chunki bu erda tafsilotlar muhim emas).

birthday uchun katta registridan foydalanish to’g’ri bo’ladimi? age uchun chi? Yoki ikkalsigayam foydalanish to’g’rimi?

const BIRTHDAY = '18.04.1982'; // katta registridan foydalanish kerakmi?

const AGE = someCode(BIRTHDAY); // katta registridan foydalanish kerakmi?

Odatda “qattiq kodlangan” konstantalar uchun katta harflardan foydalanamiz. Yoki, boshqacha qilib aytganda, qiymat bajarilishidan oldin ma’lum bo’lganda va to’g’ridan-to’g’ri kodga yozilganda.

Ushbu kodda birthday aynan shunga o’xshash. Buning uchun biz katta harflardan foydalanishimiz mumkin.

Aksincha, age ish vaqti davomida baholanadi. Bugun bizning bir yoshimiz bor, bir yil o’tgach, boshqa yoshimiz bo’ladi. Konstantalar kodni bajarish davomida o’zgarmaydi. Ammo bu birthday ga nisbatan bir oz “doimiy” u hisoblab chiqilgan uchun, biz kichik harflardan foydalanishimiz kerak.

O'quv qo'llanma xaritasi

Izohlar

izoh berishdan oldin buni o'qing…
  • Agar sizda nimani yaxshilash kerakligi haqida takliflaringiz bo'lsa - iltimos, GitHub muammosini yuboring yoki izoh berish o'rniga so'rov yuboring.
  • Agar siz maqolada biror narsani tushunolmasangiz - iltimos, batafsilroq ma'lumot bering.
  • Bir nechta so'z so'zlarini kiritish uchun <code> yorlig'ini ishlating, bir nechta satrlar uchun - ularni <pre> yorlig'i bilan o'rab qo'ying, 10 satrdan ortiq bo'lsa - sandbox (plnkr, jsbin, codepen…)