⊗jsPmClCr 263 of 505 menu

Փակումներով հաշվիչ JavaScript-ում

Եկեք վերագրենք մեր դիտարկած կոդն այնպես, որ վերադարձվող ֆունկցիան ամեն անգամ mեկով ավելացնի num փոփոխականի արժեքը.

function test() { let num = 1; return function() { console.log(num); num++; // ավելացնում ենք մեկը } } let func = test();

Ստացվում է, որ func ֆունկցիայի ամեն կանչ կonsole-ում կարտածի նոր արժեք.

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //կարտածի 1 func(); //կարտածի 2 func(); //կարտածի 3 func(); //կարտածի 4 func(); //կարտածի 5

Ստացվում է, որ մենք իրականացրել ենք ֆունկցիայի կանչերի հաշվիչ՝ օգտագործելով փակում (ավելի ճիշտ՝ օգտագործելով num փոփոխականը մեր ֆունկցիայի փակումից):

Հաշվի առեք, որ test ֆունկցիայի ամեն կանչ կվերադարձնի նոր ֆունկցիա, որն իր սեփական փակումը կունենա: Այսինքն՝ տարբեր հաշվիչներ կաշխատեն անկախ.

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 փոփոխականը:

Անկախ, առանց իմ կոդին նայելու, իրականացրեք ֆունկցիայի կանչի հաշվիչ, որը աշխատում է փակումների միջոցով:

Թող ֆունկցիան փակումում պահի 10 թիվը: Կատարեք այնպես, որ ֆունկցիայի ամեն կանչ մեկով փոքրացնի այդ թիվը և արտածի փոքրացված թիվը կոնսոլում:

Փոփոխեք նախորդ խնդիրը այնպես, որ հաշվարկը հասնի մինչև 0, ապա ամեն հաջորդ ֆունկցիայի կանչը կոնսոլում արտածի հաղորդագրություն, որ հաշվարկն ավարտված է:

Հայերեն
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Մենք օգտագործում ենք cookie-ներ կայքի աշխատանքի, վերլուծության և անհատականացման համար։ Տվյալների մշակումը կատարվում է համաձայն Գաղտնիության քաղաքականության։
ընդունել բոլորը կարգավորել մերժել