⊗jsPmClCr 263 of 505 menu

Tæller med lukninger i JavaScript

Lad os omskrive den kode, vi har set på, så den returnerede funktion hver gang forøger værdien af variablen num med én:

function test() { let num = 1; return function() { console.log(num); num++; // tilføjer en } } let func = test();

Det betyder, at hvert kald af funktionen func vil udskrive en ny værdi i konsollen:

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

Det viser sig, at vi har implementeret en tæller for funktionskald ved at bruge en lukning (mere præcist ved at bruge variablen num fra vores funktions lukning).

Vær opmærksom på, at hvert kald af funktionen test vil returnere en ny funktion, som vil have sin egen lukning. Det betyder, at forskellige tællere vil arbejde uafhængigt:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // første tæller func1(); //udskriver 1 func1(); //udskriver 2 let func2 = test(); // anden tæller func2(); //udskriver 1 func2(); //udskriver 2

Det viser sig, at den samme variabel num vil have forskellige værdier for forskellige funktioner!

Det betyder, at hvis vi kalder funktionen test to gange, så vil de funktioner, der opnås fra den, arbejde uafhængigt, og hver af disse funktioner vil have sin egen uafhængige variabel num.

Implementer selvstændigt, uden at kigge på min kode, en tæller for funktionskald, der fungerer med lukninger.

Lad funktionen i lukningen gemme tallet 10. Gør så, at hvert funktionskald reducerer dette tal med 1 og udskriver det reducerede tal i konsollen.

Modificer den forrige opgave, så nedtællingen når 0, og herefter udskriver hvert efterfølgende funktionskald en besked i konsollen om, at nedtællingen er afsluttet.

Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis