JavaScriptda Yopilishlar Orqali Hisoblagich

Keling, ko'rib chiqqan kodimizni qayta yozaylik, shunda qaytarilgan funktsiya har safar num o'zgaruvchisining qiymatini bittaga oshiradi:

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

let func = test();

Ma'lum bo'ladiki, func funktsiyasini har chaqirish konsolga yangi qiymat chiqaradi:

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

let func = test();

func(); //1 chiqaradi
func(); //2 chiqaradi
func(); //3 chiqaradi
func(); //4 chiqaradi
func(); //5 chiqaradi

Ma'lum bo'ladiki, biz funktsiyalarni chaqirish hisoblagichini yopilish yordamida amalga oshirdik (aniqrog'i funktsiyamizning yopilishidagi num o'zgaruvchisidan foydalangan holda).

E'tiboringizni qaratamanki, test funktsiyasini har chaqirish yang funktsiyani qaytaradi, uning o'ziga xos yopilishi bo'ladi. Ya'ni turli hisoblagichlar mustaqil ishlaydi:

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

let func1 = test(); // birinchi hisoblagich
func1();  //1 chiqaradi
func1();  //2 chiqaradi

let func2 = test(); // ikkinchi hisoblagich
func2();  //1 chiqaradi
func2();  //2 chiqaradi

Ma'lum bo'ladiki, num bir xil o'zgaruvchi turli funktsiyalar uchun turli qiymatga ega bo'ladi!

Ya'ni agar biz test funktsiyasini ikki marta chaqirsak, undan olingan funktsiyalar mustaqil tarzda ishlaydi va ularning har biri o'zining mustaqil num o'zgaruvchisiga ega bo'ladi.

Задание 1

Mustaqil ravishda, mening kodimga qaramay, yopilishlar orqali ishlaydigan funktsiyani chaqirish hisoblagichini amalga oshiring.

Задание 2

Funktsiya yopilishida 10 soni saqlansin. Funktsiyaning har chaqirilishi bu sonni 1 ga kamaytirsin va konsolga kamaytirilgan sonni chiqarsin.

Задание 3

Oldingi masalani shunday o'zgartiringki, hisob 0 ga yetgach, keyingi har bir funktsiya chaqiruvi konsolga hisob tugaganligi haqida xabar chiqarsin.