Globālie mainīgie funkcijās JavaScript

JavaScript (lielākajā daļā citu valodu tas parasti nav tā) mainīgie, kas definēti ārpus funkcijas, būs redzami šīs funkcijas iekšienē. Tādus mainīgos sauc par globāliem mainīgajiem. Apskatīsim piemērā:

javascriptlet num = 1; // mainīgais ārpus funkcijas

function func() {
  console.log(num); // mainīgais num ir redzams funkcijas iekšienē
}

func(); // izvadīs 1

Patiesībā mainīgajam jābūt definētam ne pirms funkcijas definēšanas, bet pirms tās izsaukšanas:

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

let num = 1; // mainīgais ārpus funkcijas
func();      // izvadīs 1

Ja maina mainīgā vērtību un pēc tam katru reizi izsauc funkciju - console.log katru reizi izvadīs dažādus rezultātus:

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

let num; // deklarējam mainīgo

num = 1; // iestatām vērtību 1
func();  // izvadīs 1

num = 2; // iestatām vērtību 2
func();  // izvadīs 2

Ja mums ir vairākas funkcijas, tad globālais mainīgais būs pieejams katrā no šīm funkcijām:

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

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

let num = 1;

func1(); // izvadīs 1
func2(); // izvadīs 1

Ja vienā no funkcijām notiks izmaiņas ar globālo mainīgo, tad šis mainīgais mainīsies visās funkcijās, kas izmanto šo mainīgo:

javascriptfunction func1() {
  console.log(num);
  num++; // mainām globālo mainīgo
}

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

let num = 1;

func1(); // izvadīs 1
func2(); // izvadīs 2

Tā kā jebkura no funkcijām var viegli mainīt globālo mainīgo, tad to izmantošana pārstāv grūti noķeramu kļūdu avotu. Šī iemesla dēļ globālo mainīgo izmantošanu skriptā nepieciešams samazināt līdz minimumam. Vēlams, lai to vispār nebūtu vai būtu vis mazākais daudzums.

Задание 1

Noteikt, nepalaist kodu, ko izvadīs konsole:

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

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

Noteikt, nepalaist kodu, ko izvadīs konsole:

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

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

Noteikt, nepalaist kodu, ko izvadīs konsole:

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

let num;

num = 1;
func();

num = 2;
func();