JavaScript-de funksiýalaryň global üýtgeýänleri

JavaScript-de (beýle dillerde köplenç şeýle däl) funksiýanyň daşynda kesgitlenen üýtgeýänler şol funksiýanyň içinde görüner. Şeýdip atlandyrylýan üýtgeýänler global diýilýär. Mysala garalyň:

javascriptlet num = 1; // funksiýanyň daşyndaky üýtgeýän

function func() {
  console.log(num); // num üýtgeýjisi funksiýanyň içinde görünýär
}

func(); // 1-ni çykarar

Aslynda, üýtgeýän funksiýanyň kesgitlenmeginden däl-de, ýöne onuň çagyrylmagyna çenli kesgitlenmelidir:

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

let num = 1; // funksiýanyň daşyndaky üýtgeýän
func();      // 1-ni çykarar

Eger üýtgeýjiniň bahasyny üýtgetseňiz we onuň yzysüre her gezek funksiýany çagyrsaňyz - console.log her gezek dürli netijeleri çykarar:

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

let num; // üýtgeýjini yglan edeliň

num = 1; // bahany 1-e belläliň
func();  // 1-ni çykarar

num = 2; // bahany 2-e belläliň
func();  // 2-ni çykarar

Eger bizde birnäçe funksiýa bar bolsa, onda global üýtgeýän şol funksiýalaryň her birinde elýeterli bolar:

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

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

let num = 1;

func1(); // 1-ni çykarar
func2(); // 1-ni çykarar

Eger funksiýalaryň birinde global üýtgeýän bilen üýtgeşmeler ýüze çyksa, onda bu üýtgeýän şol üýtgeýjini ulanýan ähli funksiýalarda üýtgerer:

javascriptfunction func1() {
  console.log(num);
  num++; // global üýtgeýjini üýtgedýäris
}

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

let num = 1;

func1(); // 1-ni çykarar
func2(); // 2-ni çykarar

Funksiýalaryň haýsy biri bolsa-da global üýtgeýjini aňsatlyk bilen üýtgedip bilýändigi sebäpli, olaryň ulanmagy kyn ýakalanýan ýalňyşlyklaryň ösüş ýeri bolup durýar. Bu sebäpli, skriptde global üýtgeýänleri ulanyşy iň aza çenli azaltmaly. Arzuw edilýän ýagdaý, olaryň hiç biri ýok bolmaly ýa-da iň az mukdary bolmaly.

Задание 1

Kody başlatmazdan, konsolde näme çykajagyny kesgitläň:

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

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

Kody başlatmazdan, konsolde näme çykajagyny kesgitläň:

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

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

Kody başlatmazdan, konsolde näme çykajagyny kesgitläň:

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

let num;

num = 1;
func();

num = 2;
func();