Zmienne globalne w funkcjach w JavaScript

W JavaScript (w innych językach najczęściej nie jest tak) zmienne zdefiniowane na zewnątrz funkcji będą widoczne wewnątrz tej funkcji. Takie zmienne nazywane są globalnymi. Spójrzmy na przykład:

javascriptlet num = 1; // zmienna na zewnątrz funkcji

function func() {
  console.log(num); // zmienna num jest widoczna wewnątrz funkcji
}

func(); // wypisze 1

W rzeczywistości zmienna musi być zdefiniowana nie przed definicją funkcji, ale przed jej wywołaniem:

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

let num = 1; // zmienna na zewnątrz funkcji
func();      // wypisze 1

Jeśli zmieniamy wartość zmiennej i po tym za każdym razem wywołujemy funkcję - console.log za każdym razem będzie wypisywał różne wyniki:

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

let num; // deklarujemy zmienną

num = 1; // ustawiamy wartość 1
func();  // wypisze 1

num = 2; // ustawiamy wartość 2
func();  // wypisze 2

Jeśli mamy kilka funkcji, to zmienna globalna będzie dostępna w każdej z tych funkcji:

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

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

let num = 1;

func1(); // wypisze 1
func2(); // wypisze 1

Jeśli w jednej z funkcji nastąpią zmiany ze zmienną globalną, to ta zmienna zmieni się we wszystkich funkcjach, używających tej zmiennej:

javascriptfunction func1() {
  console.log(num);
  num++; // zmieniamy zmienną globalną
}

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

let num = 1;

func1(); // wypisze 1
func2(); // wypisze 2

Ponieważ dowolna z funkcji łatwo może zmienić zmienną globalną, to ich użycie stanowi wylęgarnię trudnych do wychwycenia błędów. Z tego powodu używanie zmiennych globalnych w skrypcie należy ograniczać do minimum. Pożądane jest, aby w ogóle ich nie było lub było ich najmniej.

Задание 1

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

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

Określ, nie uruchamiając kodu, co zostanie wypisane w konsoli:

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

let num;

num = 1;
func();

num = 2;
func();