⊗jsPmClCr 263 of 505 menu

Contatore con chiusure in JavaScript

Riscriviamo il codice che abbiamo esaminato in modo che la funzione restituita aumenti il valore della variabile num di uno ogni volta:

function test() { let num = 1; return function() { console.log(num); num++; // aggiungiamo uno } } let func = test();

Risulterà che ogni chiamata della funzione func stamperà in console un nuovo valore:

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

Risulta che abbiamo implementato un contatore di chiamate di funzione, utilizzando una chiusura (più precisamente utilizzando la variabile num dalla chiusura della nostra funzione).

Tieni presente che ogni chiamata della funzione test restituirà una nuova funzione, che avrà la propria chiusura. Cioè diversi contatori funzioneranno in modo indipendente:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // primo contatore func1(); // stamperà 1 func1(); // stamperà 2 let func2 = test(); // secondo contatore func2(); // stamperà 1 func2(); // stamperà 2

Risulta che la stessa variabile num per funzioni diverse avrà valori diversi!

Cioè, se chiamiamo la funzione test due volte, allora le funzioni ottenute da essa funzioneranno in modo indipendente e ciascuna di queste funzioni avrà la propria variabile indipendente num.

In modo autonomo, senza guardare il mio codice, implementa un contatore di chiamate di funzione, che funzioni con le chiusure.

Lascia che la funzione in chiusura memorizzi il numero 10. Fai in modo che ogni chiamata della funzione riduca questo numero di 1 e stampi in console il numero ridotto.

Modifica il problema precedente in modo che il conteggio arrivi a 0, e poi ogni chiamata successiva della funzione stampi in console un messaggio che il conteggio è terminato.

Italiano
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesia日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Utilizziamo i cookie per il funzionamento del sito, l'analisi e la personalizzazione. I dati vengono elaborati in conformità con la Politica sulla privacy.
accetta tutto personalizza rifiuta