JavaScript да функциялардаги глобал ўзгарувчилар
JavaScript да (бошқа тилларда кўпинчак бундай эмас) функциядан ташқарида аниқланган ўзгарувчилар ушбу функция ичида кўринадиган булади. Бундай ўзгарувчилар глобал деб аталади. Мисолда кўрамиз:
let num = 1; // функциядан ташқаридаги ўзгарувчи
function func() {
console.log(num); // ўзгарувчи num функция ичида кўринади
}
func(); // 1 ни чиқаради
Аслича ўзгарувчи функциянинг аниқланишидан эмас, балки унинг чақирилишидан олдин аниқланган булиши керак:
function func() {
console.log(num);
}
let num = 1; // функциядан ташқаридаги ўзгарувчи
func(); // 1 ни чиқаради
Агар ўзгарувчининг қийматини ўзгартириб, шундан сўнг
ҳар сафар функцияни чақирсак - console.log ҳар
сафар турли натижаларни чиқаради:
function func() {
console.log(num);
}
let num; // ўзгарувчини эълон қиламиз
num = 1; // қийматини 1 деб белгилаймиз
func(); // 1 ни чиқаради
num = 2; // қийматини 2 деб белгилаймиз
func(); // 2 ни чиқаради
Агар бизда бир нечта функция бўлса, у ҳолда глобал ўзгарувчи ушбу функцияларнинг ҳар бирида мумкин бўлади:
function func1() {
console.log(num);
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 ни чиқаради
func2(); // 1 ни чиқаради
Агар функцияларнинг бирида глобал ўзгарувчи билан ўзгартиришлар юз берса, у ҳолда ушбу ўзгарувчи уни ишлатаётган барча функцияларда ўзгаради:
function func1() {
console.log(num);
num++; // глобал ўзгарувчини ўзгартирамиз
}
function func2() {
console.log(num);
}
let num = 1;
func1(); // 1 ни чиқаради
func2(); // 2 ни чиқаради
Функцияларнинг истагани осонлик билан глобал ўзгарувчини ўзгартира олгани сабабли, уларнинг ишлатилиши қийин аникланадиган хатолар манбаига айланиб қолади. Шу сабабдан скриптда глобал ўзгарувчиларни ишлатиш имкони борича чеклаш керак. Умман, уларнинг умуман бўлмаслиги ёки жуда кам миқдорда бўлиши мақсадга мувофикдир.
Кодни ишлатмасдан, консолда нима чиқаришини аниқланг:
let num = 1;
function func() {
console.log(num);
}
func();
Кодни ишлатмасдан, консолда нима чиқаришини аниқланг:
let num = 1;
function func() {
console.log(num);
}
num = 2;
func();
Кодни ишлатмасдан, консолда нима чиқаришини аниқланг:
function func() {
console.log(num);
}
let num;
num = 1;
func();
num = 2;
func();