⊗jsPmClCNG 265 of 505 menu

Variabile globale contatore in JavaScript

Portiamo la variabile num fuori dalle funzioni, rendendola così globale:

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

In questo caso tutte le funzioni restituite modificheranno questa variabile globale e i contatori lavoreranno in modo dipendente l'uno dall'altro:

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

Perché allora il nostro codice precedente creava contatori indipendenti? Ricordo questo codice:

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

Il fatto è che la variabile num è locale all'interno della funzione test. Quindi ogni chiamata a test genera la propria variabile locale.

Pertanto, le funzioni restituite si riferiranno ciascuna alla propria variabile locale della funzione test. È proprio così che si ottiene l'indipendenza del funzionamento.

Se si rende num una variabile globale - questa sarà comunque una chiusura. Semplicemente gli ambienti lessicali delle funzioni restituite si riferiscono alla stessa variabile num - qualsiasi modifica a questa variabile sarà visibile in tutte le funzioni.

Determinate, senza eseguire il codice, cosa verrà visualizzato in 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();

Determinate, senza eseguire il codice, cosa verrà visualizzato in 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();

Determinate, senza eseguire il codice, cosa verrà visualizzato in 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();
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