Lokalna promenljiva brojača u JavaScript

Razmotrimo sledeći kod:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
}

test()(); // ispisaće 1
test()(); // ispisaće 1

Zašto će uvek biti ispisivan broj 1? Da bismo ovo razumeli, prepišimo naš kod drugačije:

javascriptfunction test() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  };
};

let func1 = test(); //!! prva funkcija
func1();  //ispisaće 1

let func2 = test(); //!! druga funkcija
func2();  //ispisaće 1

To jest, svaki poziv funkcije test na ovaj način: test()(), kreira svoju funkciju sa svojim zatvorenjem i odmah poziva tu funkciju.

Задание 1

Odredite, ne pokretajući kod, šta će biti ispisano u konzolu:

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

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

Odredite, ne pokretajući kod, šta će biti ispisano u konzolu:

javascriptfunction func() {
  let num = 0;
  
  return function() {
    console.log(num);
    num++;
  };
}

let test = func;

test()();
test()();
test()();