⊗jsPmClCr 263 of 505 menu

Räknare med stängning i JavaScript

Låt oss skriva om koden vi såg på så att den returnerade funktionen varje gång ökar värdet på variabeln num med ett:

function test() { let num = 1; return function() { console.log(num); num++; // lägger till ett } } let func = test();

Det kommer att resultera i att varje anrop till funktionen func kommer att skriva ut ett nytt värde i konsolen:

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

Det visar sig att vi har implementerat en räknare för funktionsanrop genom att använda stängning (mer exakt genom att använda variabeln num från stängningen av vår funktion).

Tänk på att varje anrop till funktionen test kommer att returnera en ny funktion, som kommer att ha sin egen stängning. Det betyder att olika räknare kommer att arbeta oberoende:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // första räknaren func1(); // skriver ut 1 func1(); // skriver ut 2 let func2 = test(); // andra räknaren func2(); // skriver ut 1 func2(); // skriver ut 2

Det visar sig att samma variabel num kommer att ha olika värden för olika funktioner!

Det betyder att om vi anropar funktionen test två gånger, så kommer de funktioner som erhålls från den att fungera oberoende och var och en av dessa funktioner kommer att ha sin egen oberoende variabel num.

Implementera på egen hand, utan att kolla på min kod, en räknare för funktionsanrop som fungerar med stängningar.

Låt funktionen i stängningen lagra talet 10. Gör så att varje anrop till funktionen minskar detta tal med 1 och skriver ut det minskade talet i konsolen.

Modifiera den föregående uppgiften så att nedräkningen når 0, och sedan varje efterföljande anrop till funktionen skriver ut ett meddelande i konsolen om att nedräkningen är avslutad.

Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa