JavaScript-də Funksiyalarda Qlobal Dəyişənlər

JavaScript-də (digər dillərdə çox vaxt belə deyil) funksiyanın xaricində təyin edilmiş dəyişənlər həmin funksiyanın daxilində görünəcək. Belə dəyişənlərə qlobal dəyişənlər deyilir. Nümunəyə baxaq:

javascriptlet num = 1; // funksiyanın xaricində dəyişən

function func() {
  console.log(num); // num dəyişəni funksiya daxilində görünür
}

func(); // 1 çap edəcək

Əslində dəyişən funksiyanın təyinindən əvvəl deyil, onun çağırılmasından əvvəl müəyyən edilməlidir:

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

let num = 1; // funksiyanın xaricində dəyişən
func();      // 1 çap edəcək

Əgər dəyişənin qiymətini dəyişsəniz və bundan sonra hər dəfə funksiyanı çağırsanız - console.log hər dəfə fərqli nəticələr çap edəcək:

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

let num; // dəyişəni elan edək

num = 1; // qiyməti 1 təyin et
func();  // 1 çap edəcək

num = 2; // qiyməti 2 təyin et
func();  // 2 çap edəcək

Əgər bizim bir neçə funksiyamız varsa, onda qlobal dəyişən həmin funksiyaların hər birində əlçatan olacaq:

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

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

let num = 1;

func1(); // 1 çap edəcək
func2(); // 1 çap edəcək

Əgər funksiyalardan birində qlobal dəyişənlə bağlı dəyişikliklər baş versə, onda həmin dəyişən bu dəyişəni istifadə edən bütün funksiyalarda dəyişəcək:

javascriptfunction func1() {
  console.log(num);
  num++; // qlobal dəyişəni dəyişirik
}

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

let num = 1;

func1(); // 1 çap edəcək
func2(); // 2 çap edəcək

Funksiyalardan hər hansı biri asanlıqla qlobal dəyişəni dəyişə bildiyi üçün, onların istifadəsi çətin tutulan səhvlər üçün yataq təşkil edir. Buna görə də skriptdə qlobal dəyişənlərin istifadəsini minimuma endirmək lazımdır. Arzu olunandır ki, onlar ümumiyyətlə olmasın və ya ən az sayda olsun.

Задание 1

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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

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

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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

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

Kodu işə salmadan müəyyən edin ki, konsola nə çap olunacaq:

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

let num;

num = 1;
func();

num = 2;
func();