Локална променлива на бројачот во JavaScript

Да го разгледаме следниот код:

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

test()(); // ќе испише 1
test()(); // ќе испише 1

Зошто секогаш ќе се испишува бројот 1? За да го разбереме ова, ајде да го преработиме нашиот код поинаку:

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

let func1 = test(); //!! прва функција
func1();  //ќе испише 1

let func2 = test(); //!! втора функција
func2();  //ќе испише 1

Односно, секој повик на функцијата test на овој начин: test()(), креира своја функција со свое затворање и веднаш ја повикува таа функција.

Задание 1

Определи, без да го стартувате кодот, што ќе се испише во конзолата:

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

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

Определи, без да го стартувате кодот, што ќе се испише во конзолата:

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

let test = func;

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