⊗jsPmClCr 263 of 505 menu

Teller op closures in JavaScript

Laten we de door ons besproken code herschrijven zodat de geretourneerde functie elke keer de waarde van variabele num met één verhoogt:

function test() { let num = 1; return function() { console.log(num); num++; // tel er één bij op } } let func = test();

Het resultaat is dat elke aanroep van functie func een nieuwe waarde in de console zal uitvoeren:

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

Het blijkt dat we een functie-aanroepteller hebben geïmplementeerd, door gebruik te maken van een closure (preciezer gezegd door gebruik te maken van variabele num uit de closure van onze functie).

Houd er rekening mee dat elke aanroep van functie test een nieuwe functie zal retourneren, die zijn eigen closure zal hebben. Dat betekent dat verschillende tellers onafhankelijk zullen werken:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // eerste teller func1(); // geeft 1 func1(); // geeft 2 let func2 = test(); // tweede teller func2(); // geeft 1 func2(); // geeft 2

Het blijkt dat dezelfde variabele num voor verschillende functies een andere waarde zal hebben!

Dat betekent dat als we de functie test twee keer aanroepen, de daaruit verkregen functies onafhankelijk zullen werken en elk van deze functies zijn eigen onafhankelijke variabele num zal hebben.

Implementeer zelf, zonder in mijn code te spieken, een functie-aanroepteller die werkt op closures.

Laat de functie in de closure het getal 10 opslaan. Zorg ervoor dat elke aanroep van de functie dit getal met 1 vermindert en het verminderde getal in de console uitvoert.

Pas de vorige opgave zo aan dat de aftelling doorgaat tot 0, en daarna elke volgende functie-aanroep een bericht in de console uitvoert dat de aftelling is beëindigd.

Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren