Plaaslike Tellerveranderlike in JavaScript

Beskou die volgende kode:

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

test()(); // sal 1 vertoon
test()(); // sal 1 vertoon

Hoekom sal altyd die nommer 1 vertoon word? Om dit te verstaan, laat ons ons kode herskryf op 'n ander manier:

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

let func1 = test(); //!! eerste funksie
func1();  //sal 1 vertoon

let func2 = test(); //!! tweede funksie
func2();  //sal 1 vertoon

Dit wil sê elke oproep van die funksie test op hierdie manier: test()(), skep sy eie funksie met sy eie sluiting en roep dadelik daardie funksie aan.

Задание 1

Bepaal, sonder om die kode te laat loop, wat in die konsole vertoon sal word:

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

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

Bepaal, sonder om die kode te laat loop, wat in die konsole vertoon sal word:

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

let test = func;

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