Гузариш ба мундариҷа
Мавзӯи 2 аз 16
Назария

Тағйирёбандаҳо

Ин барои чӣ лозим аст

Барномаҳо доимо чизеро дар хотир нигоҳ медоранд: номи корбар, холҳо дар бозӣ, маблағ дар сабад. Барои ин тағйирёбандаҳо ҳастанд — «қуттиҳо»-и номдор, ки ба онҳо қимат мегузоранд, то баъдтар онро бо ном гиранд ё бо қимати нав иваз кунанд.

Сохтани тағйирёбанда

Тағйирёбандаро бо калимаи let месозанд, ба он ном медиҳанд ва бо = қимат мегузоранд:

let age = 16;
console.log(age);

Натиҷа:

16

Аломати = дар ин ҷо «баробар»-и математикӣ нест, балки бахшидан (assignment): «қиматро аз тарафи рост ба қуттии чап гузор».

Қимати тағйирёбандаро чанд маротибае, ки хоҳед, иваз кардан мумкин аст — аллакай бе let:

let level = 1;
console.log(level);
level = 2;
console.log(level);

Натиҷа:

1
2

Доимиҳо: const

Агар қимат набояд тағйир ёбад, const-ро истифода баред:

const birthYear = 2009;
birthYear = 2010; // TypeError: Assignment to constant variable.

Доимиро аз нав навиштан мумкин нест — JavaScript дарҳол барномаро бо хато қатъ мекунад. Ин аз тағйироти тасодуфӣ муҳофизат мекунад. Қоида: бо пешфарз const нависед, ва let-ро танҳо вақте, ки боварӣ доред қимат иваз мешавад.

Шумо метавонед калимаи кӯҳнаи var-ро вохӯред. Он ба let монанд кор мекунад, аммо бо аҷоибот. Дар коди муосир var-ро истифода намебаранд.

Қимати нав аз кӯҳна

Аксар вақт қимати навро аз кӯҳна ҳисоб мекунанд:

let coins = 10;
coins = coins + 5;   // 10-ро гирифтем, 5 илова кардем, баргардондем
console.log(coins);

Натиҷа:

15

Барои ин навиштҳои кӯтоҳ ҳастанд:

let x = 10;
x += 5;  // x = x + 5  → 15
x -= 3;  // x = x - 3  → 12
x *= 2;  // x = x * 2  → 24
x /= 4;  // x = x / 4  → 6
x++;     // x = x + 1  → 7
x--;     // x = x - 1  → 6
console.log(x);

Натиҷа:

6

Тағйирёбандаҳо дар ҳисоб ва баровардан

const price = 120;
const count = 3;
const total = price * count;
console.log("Ҳамагӣ:", total);

Натиҷа:

Ҳамагӣ: 360

Тағйирёбандаҳоро чӣ гуна номгузорӣ кардан

  • Ном метавонад ҳарфҳо, рақамҳо, _ ва $ дошта бошад, аммо бо рақам сар шуда наметавонад: user1 — мумкин, 1user — не.
  • Ҳарфи калон ва хурд муҳим аст: score ва Score — тағйирёбандаҳои гуногунанд.
  • Калимаҳои хидматии забонро истифода бурдан мумкин нест: let, const, if, function…
  • Номҳои аз якчанд калима иборатро бо camelCase менависанд: калимаи аввал бо ҳарфи хурд, баъдинаҳо — бо калон: userName, totalPrice, isLoggedIn.
  • Ном бояд фаҳмонад, ки дар дохил чӣ ҳаст: price аз p беҳтар аст, ва itemsInCart аз x беҳтар.

Иваз кардани ҷойи қиматҳо

Масъалаи классикӣ: чӣ тавр мӯҳтавои ду тағйирёбандаро иваз кардан мумкин аст? Агар танҳо a = b нависед, қимати кӯҳнаи a гум мешавад. Бинобар ин тағйирёбандаи муваққатӣ лозим аст — мисли истакони сеюм, то ҷойи шарбат ва обро иваз кунед.

Дар дохил чӣ гуна кор мекунад

Вақте ки JavaScript let score = 0-ро мебинад, дар хотира ҷой ҷудо мекунад, онро бо номи score ишора мекунад ва ба он 0 мегузорад. Вақте ки score += 10 менависед, JS қимати ҷориро (0) мехонад, 0 + 10-ро ҳисоб мекунад ва натиҷаро бармегардонад. Тағйирёбанда танҳо қимати охирин-и бахшидашударо нигоҳ медорад.

Як номро ду маротиба эълон кардан мумкин нест: let score-и дуюм хатои SyntaxError: Identifier 'score' has already been declared медиҳад.

Хатоҳои маъмул

  1. Истифода пеш аз эълон. console.log(name); let name = "Аня"; → ReferenceError. Аввал тағйирёбандаро созед, баъд истифода баред.
  2. let-и такрорӣ. Барои иваз кардани тағйирёбанда let-ро дубора навиштан лозим нест: танҳо x = 5.
  3. Иваз кардани const. const total = 0; total += 5; → TypeError. Агар қимат иваз шавад — let лозим аст.
  4. Хатои чопӣ дар ном. let userName ва баъд console.log(username) — номҳои гуногун, ReferenceError мешавад.
  5. =-ро бо муқоиса омехтан. = қимат мегузорад. Бо аломатҳои дигар муқоиса мекунанд — дар мавзӯи шартҳо.

Ёддошт

Чӣ Чӣ тавр
Тағйирёбандаи иваззаванда let score = 0;
Доимӣ const name = "Аня";
Аз нав навиштан score = 5;
Навиштҳои кӯтоҳ += -= *= /= ++ --
Услуби номҳо camelCase: totalPrice
Қоида бо пешфарз const, агар иваз шавад — let

Ду тағйирёбанда

Осон+10 XP

Созед:

  • доимии city бо қимати "Dushanbe";
  • тағйирёбандаи score бо қимати 0, ва дар сатри навбатӣ онро 10 зиёд кунед.

Дар охир score бояд ба 10 баробар бошад.

Барои ҳал кардани масъалаҳо коннекторро пайваст кун

Коди масъалаҳо дар компютери худат иҷро мешавад — ин аз браузер тезтар ва боэътимодтар аст. Барои ин барномаи ройгони коннектори CodeWithMe лозим аст. Онро як бор пайваст кардан кифоя аст.

Коннекторро дар ин компютер ҷустуҷӯ мекунем…

  1. 1
    Коннекторро барои системаи худ (Windows, macOS ё Linux) зеркашӣ кун.Зеркашии коннекторДар саҳифаи зеркашӣ файлеро интихоб кун, ки дар номаш системаи ту ҳаст, масалан windows-amd64.
  2. 2Онро иҷро кун ва ҷузвдонеро интихоб кун, ки ҳалҳоят дар он ҷо меистанд. Python ва Node.js-ро ӯ худаш ҳангоми зарурат ба он ҷо мегузорад.
  3. 3
    Дар поён рамзи 6-рақамаро ворид кун — он дар равзанаи коннектор навишта шудааст («Рамз барои сайти CodeWithMe»). Агар браузер дар бораи дастрасӣ ба шабакаи маҳаллӣ пурсад — иҷозат деҳ.

Коннектор кушода аст (рамзи манбаъ дар GitHub), танҳо дар компютери ту кор мекунад ва кодро танҳо пас аз ворид кардани рамзи пайвастшавӣ иҷро мекунад.