JavaScriptда функциялардаги ўзгарувчиларнинг бир хил номлари
Функциянинг ташқарисида ҳам, ичида ҳам num
ўзгарувчиси мавжуд бўлсин. Бундай ҳолда, num
локал ўзгарувчиси билан амалга оширилган ҳар қандай
ўзгартиришлар num глобал ўзгарувчисига ҳеч
қандай таъсир кўрсатмайди:
let num = 1; // глобал ўзгарувчи
function func() {
let num = 2; // локал ўзгарувчи
console.log(num);
}
func(); // функцияни чақирамиз, 2 чиқади
console.log(num); // 1 чиқади - глобал ўзгарувчи ўзгармади
Аммо, агар биз 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);