JavaScriptda Yopilishlar Orqali Hisoblagich
Keling, ko'rib chiqqan kodimizni qayta yozaylik,
shunda qaytarilgan funktsiya har safar
num o'zgaruvchisining qiymatini
bittaga oshiradi:
function 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:
function 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:
function 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.
Mustaqil ravishda, mening kodimga qaramay, yopilishlar orqali ishlaydigan funktsiyani chaqirish hisoblagichini amalga oshiring.
Funktsiya yopilishida 10 soni saqlansin.
Funktsiyaning har chaqirilishi bu sonni
1 ga kamaytirsin va
konsolga kamaytirilgan sonni chiqarsin.
Oldingi masalani shunday o'zgartiringki,
hisob 0 ga yetgach, keyingi
har bir funktsiya chaqiruvi konsolga
hisob tugaganligi haqida xabar chiqarsin.