⊗jsPmClCNG 265 of 505 menu

Variável Global de Contador em JavaScript

Vamos colocar a variável num fora das funções, tornando-a assim global:

let num = 1; // variável global function test() { return function() { console.log(num); num++; }; }

Neste caso, todas as funções retornadas irão alterar esta variável global e os contadores irão funcionar de forma dependente um do outro:

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

Por que nosso código anterior criava contadores independentes? Lembre-se deste código:

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

O fato é que a variável num é local dentro da função test. Portanto, cada chamada de test cria sua própria variável local.

Portanto, as funções retornadas irão referenciar cada uma a sua própria variável local da função test. É assim que a independência de operação é alcançada.

Se num for tornada uma variável global - isso ainda será um closure. Simplesmente os ambientes lexicais das funções retornadas referenciam a mesma variável num - quaisquer alterações nesta variável serão visíveis em todas as funções.

Determine, sem executar o código, o que será exibido no console:

let counter = 0; function test() { return function() { console.log(counter); counter++; }; } let func = test; let func1 = func(); let func2 = func(); func1(); func2(); func1(); func2();

Determine, sem executar o código, o que será exibido no console:

function test() { let counter = 0; return function() { return function() { console.log(counter); counter++; }; }; } let func = test()(); let func1 = func; let func2 = func; func1(); func2(); func1(); func2();

Determine, sem executar o código, o que será exibido no console:

function test() { let counter = 0; return function() { return function() { console.log(counter); counter++; }; }; } let func = test(); let func1 = func(); let func2 = func(); func1(); func2(); func1(); func2();
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