JavaScript-те жабылымдар және функцияны орнында шақыру

Сіз білетіндей, анонимді функцияны орнында шақырып, оның жұмыс нәтижесін қандай да бір айнымалыға тағайындауға болады:

javascriptlet result = function() {
  return '!';
}();

console.log(result); // шығарады '!'

Көбінесе, орнында шақырылатын функцияны мұндай жағдайда дөңгелек жақшаға алады, бірақ бұл қажет емес. Бұл функцияның орнында шақырылатынын бірден көру үшін жасалады:

javascriptlet result = (function() {
  return '!';
})();

console.log(result); // шығарады '!'

Енді орнында шақырылған функцияның нәтижесі анонимді функция болсын:

javascriptlet func = (function() {
  return function() {
    console.log('!');
  }
})();

func(); // шығарады '!'

Қайтарылатын функция жабылымда num айнымалысын сақтайтындай етейік:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
})();

Егер тағы num++ қоссақ, онда func функциясы дайын есептегішке айналады:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  }
})();

func(); //шығарады 1
func(); //шығарады 2
func(); //шығарады 3
func(); //шығарады 4
func(); //шығарады 5
Задание 1

Менің кодымға қарамастан, өзіңіз осындай есептегішті жүзеге асырыңыз.

Задание 2

Есептегіштің жұмысын өзгертіңіз, ол 5-ке дейін санасын, содан кейін есептеу бастапқы күйден басталсын.