Лакальная пераменная лічыльніка ў 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()();