Globalne spremenljivke v funkcijah v JavaScript

V JavaScript (v drugih jezikih je pogosto drugače) so spremenljivke, definirane zunaj funkcije, vidne znotraj te funkcije. Take spremenljivke imenujemo globalne. Poglejmo na primeru:

javascriptlet num = 1; // spremenljivka zunaj funkcije

function func() {
  console.log(num); // spremenljivka num je vidna znotraj funkcije
}

func(); // izpiše 1

Pravzaprav mora biti spremenljivka definirana ne pred definicijo funkcije, ampak pred njenim klicem:

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

let num = 1; // spremenljivka zunaj funkcije
func();      // izpiše 1

Če spreminjamo vrednost spremenljivke in po tem vsakič kličemo funkcijo - console.log bo vsakič izpisal različne rezultate:

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

let num; // deklariramo spremenljivko

num = 1; // nastavimo vrednost 1
func();  // izpiše 1

num = 2; // nastavimo vrednost 2
func();  // izpiše 2

Če imamo več funkcij, bo globalna spremenljivka dostopna v vsaki od teh funkcij:

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

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

let num = 1;

func1(); // izpiše 1
func2(); // izpiše 1

Če se v eni od funkcij spremenijo globalne spremenljivke, se bo ta spremenljivka spremenila v vseh funkcijah, ki uporabljajo to spremenljivko:

javascriptfunction func1() {
  console.log(num);
  num++; // spreminjamo globalno spremenljivko
}

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

let num = 1;

func1(); // izpiše 1
func2(); // izpiše 2

Ker lahko katera koli funkcija zlahka spremeni globalno spremenljivko, je njihova uporaba razmnoževalnik težko ujetih napak. Zaradi tega je uporabo globalnih spremenljivk v skripti treba zmanjšati na minimum. Zaželeno je, da jih sploh ni ali da jih je najmanjše možno število.

Задание 1

Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:

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

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

Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:

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

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

Določite, ne da bi zagnali kodo, kaj se bo izpisalo v konzolo:

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

let num;

num = 1;
func();

num = 2;
func();