⊗jsPmClCr 263 of 505 menu

Contador com Closures em JavaScript

Vamos reescrever o código que vimos para que a função retornada incremente o valor da variável num em um a cada vez:

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

O resultado é que cada chamada da função func exibirá um novo valor no console:

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

O resultado é que implementamos um contador de chamadas de função, usando um closure (mais precisamente, usando a variável num do closure da nossa função).

Observe que cada chamada da função test retornará uma nova função, que terá seu próprio closure. Ou seja, contadores diferentes funcionarão de forma independente:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // primeiro contador func1(); //exibirá 1 func1(); //exibirá 2 let func2 = test(); // segundo contador func2(); //exibirá 1 func2(); //exibirá 2

O resultado é que a mesma variável num terá valores diferentes para funções diferentes!

Ou seja, se chamarmos a função test duas vezes, as funções obtidas a partir dela funcionarão de forma independente e cada uma dessas funções terá sua própria variável num independente.

Por conta própria, sem olhar o meu código, implemente um contador de chamada de função que funcione com closures.

Suponha que a função em um closure armazene o número 10. Faça com que cada chamada da função reduza esse número em 1 e exiba no console o número reduzido.

Modifique a tarefa anterior para que a contagem regressiva chegue a 0 e, em seguida, cada chamada subsequente da função exiba no console uma mensagem informando que a contagem regressiva terminou.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar