Variablat globale në funksione në JavaScript

Në JavaScript (në shumicën e gjuhëve të tjera zakonisht nuk është kështu) variablat e përcaktuar jashtë funksionit, do të jenë të dukshme brenda atij funksioni. Variabla të tillë quhen globale. Le të shohim një shembull:

javascriptlet num = 1; // variabël jashtë funksionit

function func() {
  console.log(num); // variabla num është e dukshme brenda funksionit
}

func(); // do të shfaqë 1

Në fakt, variabla duhet të jetë e përcaktuar jo përpara përcaktimit të funksionit, por përpara thirrjes së tij:

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

let num = 1; // variabël jashtë funksionit
func();      // do të shfaqë 1

Nëse ndryshoni vlerën e variablës dhe më pas e thirrni funksionin çdo herë - console.log çdo herë do të shfaqë rezultate të ndryshme:

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

let num; // deklarojmë variablën

num = 1; // caktojmë vlerën 1
func();  // do të shfaqë 1

num = 2; // caktojmë vlerën 2
func();  // do të shfaqë 2

Nëse kemi disa funksione, atëherë variabla globale do të jetë e disponueshme në secilin prej këtyre funksioneve:

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

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

let num = 1;

func1(); // do të shfaqë 1
func2(); // do të shfaqë 1

Nëse në një nga funksionet ndodhin ndryshime me variablën globale, atëherë ajo variabël do të ndryshojë në të gjitha funksionet që përdorin këtë variabël:

javascriptfunction func1() {
  console.log(num);
  num++; // ndryshojmë variablën globale
}

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

let num = 1;

func1(); // do të shfaqë 1
func2(); // do të shfaqë 2

Meqenëse çdo funksion lehtësisht mund të ndryshojë variablën globale, përdorimi i tyre përfaqëson një çerdhe gabimesh të vështira për t'u kapur. Për këtë arsye, përdorimi i variablave globale në skript duhet të reduktohet në minimum. Është e dëshirueshme që ato të mos ekzistojnë fare ose të jenë në sasinë më minimale.

Задание 1

Përcaktoni, pa ekzekutuar kodin, çfarë do të shfaqet në konsol:

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

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

Përcaktoni, pa ekzekutuar kodin, çfarë do të shfaqet në konsol:

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

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

Përcaktoni, pa ekzekutuar kodin, çfarë do të shfaqet në konsol:

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

let num;

num = 1;
func();

num = 2;
func();