Глабальныя зменныя ў функцыях у JavaScript

У JavaScript (у іншых мовах найчасцей не так) зменныя, вызначаныя звонку функцыі, будуць бачныя ўнутры гэтай функцыі. Такія зменныя называюцца глабальнымі. Паглядзім на прыкладзе:

javascriptlet num = 1; // зменная звонку функцыі

function func() {
  console.log(num); // зменная num бачная ўнутры функцыі
}

func(); // вывядзе 1

На самай справе зменная павінна быць вызначана не перад вызначэннем функцыі, а перад яе выклікам:

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

let num = 1; // зменная звонку функцыі
func();      // вывядзе 1

Калі мяняць значэнне зменнай і пасля гэтага кожны раз выклікаць функцыю - console.log кожны раз будзе выводзіць розны вынік:

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

let num; // аб'явім зменную

num = 1; // задаем значэнне 1
func();  // вывядзе 1

num = 2; // задаем значэнне 2
func();  // вывядзе 2

Калі ў нас некалькі функцый, то глабальная зменная будзе даступная ў кожнай з гэтых функцый:

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

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

let num = 1;

func1(); // вывядзе 1
func2(); // вывядзе 1

Калі ў адной з функцый адбудуцца змены з глабальнай зменнай, то гэтая зменная змяніцца ва ўсіх функцыях, якія выкарыстоўваюць гэтую зменную:

javascriptfunction func1() {
  console.log(num);
  num++; // мяняем глабальную зменную
}

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

let num = 1;

func1(); // вывядзе 1
func2(); // вывядзе 2

Паколькі любая з функцый лёгка можа памяняць глабальную зменную, то іх выкарыстанне ўяўляе сабой рассаднік цяжкаўлоўных памылак. Па гэтай прычыне выкарыстанне глабальных зменных у скрыпце трэба зводзіць да мінімуму. Пажадана, каб іх наогул не было або было самае мінімальная колькасць.

Задание 1

Вызначыце, не запускаючы код, што вывядзецца ў кансоль:

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

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

Вызначыце, не запускаючы код, што вывядзецца ў кансоль:

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

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

Вызначыце, не запускаючы код, што вывядзецца ў кансоль:

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

let num;

num = 1;
func();

num = 2;
func();