Lokal tellervariabel i JavaScript

La oss se på følgende kode:

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

test()(); // vil skrive ut 1
test()(); // vil skrive ut 1

Hvorfor vil det alltid skrives ut tallet 1? For å forstå dette, la oss omskrive koden vår på en annen måte:

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

let func1 = test(); //!! første funksjon
func1();  //skriver ut 1

let func2 = test(); //!! andre funksjon
func2();  //skriver ut 1

Det vil si at hvert kall til funksjonen test på denne måten: test()(), oppretter sin egen funksjon med sitt eget lukning og kjører umiddelbart denne funksjonen.

Задание 1

Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:

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

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

Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:

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

let test = func;

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