Тағйирёбандаҳо
Ин барои чӣ лозим аст
Барномаҳо доимо чизеро дар хотир нигоҳ медоранд: номи корбар, холҳо дар бозӣ, маблағ дар сабад. Барои ин тағйирёбандаҳо ҳастанд — «қуттиҳо»-и номдор, ки ба онҳо қимат мегузоранд, то баъдтар онро бо ном гиранд ё бо қимати нав иваз кунанд.
Сохтани тағйирёбанда
Тағйирёбандаро бо калимаи 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 медиҳад.
Хатоҳои маъмул
- Истифода пеш аз эълон.
console.log(name); let name = "Аня";→ReferenceError. Аввал тағйирёбандаро созед, баъд истифода баред. let-и такрорӣ. Барои иваз кардани тағйирёбандаlet-ро дубора навиштан лозим нест: танҳоx = 5.- Иваз кардани
const.const total = 0; total += 5;→TypeError. Агар қимат иваз шавад —letлозим аст. - Хатои чопӣ дар ном.
let userNameва баъдconsole.log(username)— номҳои гуногун,ReferenceErrorмешавад. =-ро бо муқоиса омехтан.=қимат мегузорад. Бо аломатҳои дигар муқоиса мекунанд — дар мавзӯи шартҳо.
Ёддошт
| Чӣ | Чӣ тавр |
|---|---|
| Тағйирёбандаи иваззаванда | let score = 0; |
| Доимӣ | const name = "Аня"; |
| Аз нав навиштан | score = 5; |
| Навиштҳои кӯтоҳ | += -= *= /= ++ -- |
| Услуби номҳо | camelCase: totalPrice |
| Қоида | бо пешфарз const, агар иваз шавад — let |