⊗jsPmClCr 263 of 505 menu

JavaScriptда Closureлар орқали ҳисоблагч

Келтирилган кодни қайта ёзайлик, ҳар чақирилган функция num ўзгарувчисининг қийматини биттага ошириб борса:

function test() { let num = 1; return function() { console.log(num); num++; // биттани қўшамиз } } let func = test();

Демак, func функциясини ҳар чақириш консолга янги қийматни чиқаради:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //1 чиқади func(); //2 чиқади func(); //3 чиқади func(); //4 чиқади func(); //5 чиқади

Хулоса, биз closureдан (аниқроги бизнинг функциямизнинг closureиданги num ўзгарувчисидан) фойдаланиб, функцияларни чақириш ҳисоблагчини амалга оширдик.

Эътибор беринг, test функциясини ҳар чақириш ўзининг closureи бўлган янги функцияни қайтаради. Яъни турли ҳисоблагчлар мустақил ишлайди:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // биринчи ҳисоблагч func1(); //1 чиқади func1(); //2 чиқади let func2 = test(); // иккинчи ҳисоблагч func2(); //1 чиқади func2(); //2 чиқади

Демак, num бир хил ўзгарувчиси турли функциялар учун турли қийматга эга бўлади!

Яъни агар биз test функциясини икки марта чақирсак, ундан олинган функциялар мустақил ишлайди ва ушбу функцияларнинг ҳар бири ўзининг мустақил num ўзгарувчисига эга бўлади.

Мустақил равишда, менинг кодимга қарамай, closureлар орқали ишлайдиган функцияни чақириш ҳисоблагчини амалга оширинг.

Функция closureда 10 сонини сақласин. Функциянинг ҳар бир чақирилиши ушбу сонни 1 га камайтириши ва камайган сонни консолга чиқариши учун қилинг.

Олдинги масалани моддификация қилинг, ҳисоб 0 га етгунгача бориб, кейин функциянинг ҳар бир кейинги чақирилиши консолга ҳисоб тугагани ҳақида хабар чиқарсин.

Ўзбек
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeOʻzbekTiếng Việt
Биз веб-сайт ишлаши, таҳлил қилиш ва персоналлаштириш учун кукидан фойдаланамиз. Маълумотларни қайта ишлаш Махфийлик сиёсатига мувофиқ амалга оширилади.
ҳаммасини қабул қилиш мослаштириш рад этиш