Глобалӣ тағирёбандаҳо дар функсияҳои JavaScript

Дар JavaScript (дар дигар забонҳо бештар чунин нест) тағирёбандаҳое, ки аз беруни функсия муайян шудаанд, дар дохили он функсия дида мешаванд. Чунин тағирёбандаҳо глобалӣ номида мешаванд. Биёед бо мисол нигарем:

javascriptlet num = 1; // тағирёбанда аз беруни функсия

function func() {
  console.log(num); // тағирёбандаи num дар дохили функсия дида мешавад
}

func(); // 1-ро чоп мекунад

Дар асл, тағирёбанда бояд на пеш аз муайян кардани функсия, балки пеш аз фарохонӣ кардани он муайян шавад:

javascriptfunction func() {
  console.log(num);
}

let num = 1; // тағирёбанда аз беруни функсия
func();      // 1-ро чоп мекунад

Агар қимати тағирёбандаро тағир диҳем ва пас аз он ҳар дафъа функсияро фаро бихонем - console.log ҳар дафъа натиҷаҳои гуногунро чоп мекунад:

javascriptfunction func() {
  console.log(num);
}

let num; // тағирёбандаро эълон мекунем

num = 1; // қимати 1-ро таъин мекунем
func();  // 1-ро чоп мекунад

num = 2; // қимати 2-ро таъин мекунем
func();  // 2-ро чоп мекунад

Агар мо якчанд функсия дошта бошем, пас тағирёбандаи глобалӣ дар ҳар яке аз ин функсияҳо дастрас хоҳад буд:

javascriptfunction func1() {
  console.log(num);
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // 1-ро чоп мекунад
func2(); // 1-ро чоп мекунад

Агар дар яке аз функсияҳо тағйирот бо тағирёбандаи глобалӣ рӯй диҳад, пас он тағирёбанда дар ҳама функсияҳое, ки аз ин тағирёбанда истифода мекунанд, тағир меёбад:

javascriptfunction func1() {
  console.log(num);
  num++; // тағирёбандаи глобалиро тағир медиҳем
}

function func2() {
  console.log(num);
}

let num = 1;

func1(); // 1-ро чоп мекунад
func2(); // 2-ро чоп мекунад

Азбаски ҳар яке аз функсияҳо метавонад осонӣ тағирёбандаи глобалиро тағир диҳад, истифодаи онҳо манбаи хатогиҳои душвотифҳом мешавад. Аз ин рӯ, истифодаи тағирёбандаҳои глобалӣ дар скрипт бояд ба ҳадди имкон кам карда шавад. Матлуб аст, ки онҳо умулан вуҷуд надошта бошанд с шумораи онҳо хеле кам бошад.

Задание 1

Муайян кунед, ки коди зерин чӣ чоп мекунад (бе он ки кодро иҷро кунед):

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

func();
Задание 2

Муайян кунед, ки коди зерин чӣ чоп мекунад (бе он ки кодро иҷро кунед):

javascriptlet num = 1;
    
function func() {
  console.log(num);
}

num = 2;
func();
Задание 3

Муайян кунед, ки коди зерин чӣ чоп мекунад (бе он ки кодро иҷро кунед):

javascriptfunction func() {
  console.log(num);
}

let num;

num = 1;
func();

num = 2;
func();