⊗jsPmClCr 263 of 505 menu

JavaScript-də Qapanışlar üzərində Sayğac

Gəlin nəzərdən keçirdiyimiz kodu elə yenidən yazaq ki, qaytarılan funksiya hər dəfə num dəyişəninin dəyərini bir vahid artırsın:

function test() { let num = 1; return function() { console.log(num); num++; // bir vahid artırırıq } } let func = test();

Belə çıxır ki, func funksiyasının hər çağırılışı konsola yeni bir dəyər çıxaracaq:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //1 çıxaracaq func(); //2 çıxaracaq func(); //3 çıxaracaq func(); //4 çıxaracaq func(); //5 çıxaracaq

Beləliklə, biz qapanışdan istifadə edərək funksiya çağırışları üçün sayğac həyata keçirdik (daha dəqiqi, funksiyamızın qapanışındakı num dəyişənindən istifadə etməklə).

Nəzərə alın ki, test funksiyasının hər çağırılışı yeni bir funksiya qaytaracaq, onun öz qapanışı olacaq. Yəni müxtəlif sayğaclar müstəqil işləyəcək:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // birinci sayğac func1(); //1 çıxaracaq func1(); //2 çıxaracaq let func2 = test(); // ikinci sayğac func2(); //1 çıxaracaq func2(); //2 çıxaracaq

Belə çıxır ki, eyni num dəyişəni müxtəlif funksiyalar üçün müxtəlif dəyərlərə sahib olacaq!

Yəni əgər biz test funksiyasını iki dəfə çağırsaq, ondan alınan funksiyalar müstəqil şəkildə işləyəcək və onların hər biri öz müstəqil num dəyişəninə sahib olacaq.

Müstəqil olaraq, mənim koduma baxmadan, qapanışlar üzərində işləyən funksiya çağırış sayğacını həyata keçirin.

Qoy funksiya qapanışda 10 ədədini saxlasın. Elə edin ki, funksiyanın hər çağırılışı bu ədədi 1 vahid azaltsın və azaldılmış ədədi konsola çıxartsın.

Əvvəlki məsələni elə dəyişin ki, geri sayım 0-a çatsın, sonra isə hər bir sonrakı funksiya çağırışı konsola geri sayımın bitdiyi haqqında mesaj çıxartsın.

Azərbaycan
AfrikaansБългарскиবাংলাБеларускаяČ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
Biz saytin işi, analitika və fərdiləşdirmə üçün cookie istifadə edirik. Məlumatların emalı Məxfilik Siyasəti əsasında həyata keçirilir.
hamısını qəbul et konfiqurasiya et rədd et