Номи якхелаи тағйирёбандаҳо дар функсияҳо дар JavaScript
Бигзор ва берун аз функсия ва дар дохили он тағйирёбандаи
num мавҷуд бошад. Дар ин ҳолат ҳар гуна тағйирот
бо тағйирёбандаи маҳаллӣ num ба тағйирёбандаи глобалӣ
num таъсире намерасонад:
let num = 1; // тағйирёбандаи глобалӣ
function func() {
let num = 2; // тағйирёбандаи маҳаллӣ
console.log(num);
}
func(); // функсияро фарохонӣ мекунем, 2-ро барориш мекунад
console.log(num); // 1-ро барориш мекунад - тағйирёбандаи глобалӣ тағйир наёфт
Вале, агар мо эълон кардани тағйирёбандаи маҳаллии
num тавассути let фаромӯш кунем, пас дар дохили функсия
тағйирёбандаи маҳаллӣ num эҷод намешавад,
танҳо тағйирёбандаи глобалӣ тағйир меёбад:
let num = 1;
function func() {
num = 2; // навиштани let-ро фаромӯш кардем - тағйирёбандаи берунӣро тағйир медиҳем
console.log(num);
}
func(); // функсияро фарохонӣ мекунем, 2-ро барориш мекунад
console.log(num); // 2-ро барориш мекунад - тағйирёбанда тағйир ёфт
Дар ин ҷо ду ҳолат метавонад мавҷуд бошад: ё мо воқеан мехостем
тағйирёбандаи глобалиро тағйир диҳем (пас
ҳама чиз хуб аст), ё мо let-ро фаромӯш кардем ва ба таври тасодуфӣ
тағйирёбандаи глобалиро тағйир додем.
Ҳолати дуюм хатои душвоёфтест,
ки ба рафтори ноаён дар скрипт оварда мерасонад.
Аз ин рӯ, ҳамеша, ҳангоми ворид кардани тағйирёбандаи нав онро
тавассути let эълон кунед.
Муайян кунед, бе иҷрои рамз, чӣ ба консол барориш карда мешавад:
let num = 1;
function func() {
num = 2;
}
func();
console.log(num);
Муайян кунед, бе иҷрои рамз, чӣ ба консол барориш карда мешавад:
let num = 1;
function func() {
let num = 2;
}
func();
console.log(num);