⊗jsPmClCr 263 of 505 menu

Čítač s uzávěry v JavaScriptu

Přepišme námi probíraný kód tak, aby vrácená funkce pokaždé zvýšila hodnotu proměnné num o jednu:

function test() { let num = 1; return function() { console.log(num); num++; // přičteme jedničku } } let func = test();

Vyplývá z toho, že každé volání funkce func vypíše do konzole novou hodnotu:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //vypíše 1 func(); //vypíše 2 func(); //vypíše 3 func(); //vypíše 4 func(); //vypíše 5

Vyšlo nám, že jsme implementovali čítač volání funkcí pomocí uzávěru (přesněji pomocí proměnné num z uzávěru naší funkce).

Mějte na paměti, že každé volání funkce test vrátí novou funkci, která bude mít svůj vlastní uzávěr. To znamená, že různé čítače budou pracovat nezávisle:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // první čítač func1(); //vypíše 1 func1(); //vypíše 2 let func2 = test(); // druhý čítač func2(); //vypíše 1 func2(); //vypíše 2

Vychází nám, že stejná proměnná num bude pro různé funkce mít různou hodnotu!

To znamená, že pokud funkci test zavoláme dvakrát, pak z ní získané funkce budou fungovat nezávisle a každá z těchto funkcí bude mít svou nezávislou proměnnou num.

Samostatně, bez nahlížení do mého kódu, implementujte čítač volání funkce, fungující na uzávěrech.

Nechť funkce v uzávěru uchovává číslo 10. Zařiďte, aby každé volání funkce snížilo toto číslo o 1 a vypisovalo do konzole snížené číslo.

Upravte předchozí úlohu tak, aby odpočet došel k 0, a poté každé další volání funkce vypisovalo do konzole zprávu, že odpočet byl ukončen.

Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικά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
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout