Глобальные переменные в функциях в 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();