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