Тағйирёбандаи маҳаллии шумориш дар 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()();