⊗jsPmClCr 263 of 505 menu

ქლოჟერებზე დაფუძნებული თვლის მექანიზმი JavaScript-ში

მოდით, გადავწეროთ ჩვენ მიერ განხილული კოდი ისე, რომ დაბრუნებული ფუნქცია ყოველ ჯერზე გაზრდის 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-ს

გამოდის, რომ ჩვენ განვახორციელეთ ფუნქციის გამოძახების თვლის მექანიზმი, ქლოჟერის გამოყენებით (უფრო ზუსტად, ჩვენი ფუნქციის ქლოჟერიდან 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. გახადეთ ისე, რომ ფუნქციის ყოველი გამოძახება ეს რიცხვი 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çeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა