⊗jsPmClCNG 265 of 505 menu

Globalna zmienna licznika w JavaScript

Wynieśmy zmienną num poza funkcje, tym samym czyniąc ją globalną:

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

W tym przypadku wszystkie zwracane funkcje będą modyfikować tę globalną zmienną i liczniki będą już działać zależnie od siebie:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // pierwszy licznik func1(); // wypisze 1 func1(); // wypisze 2 let func2 = test(); // drugi licznik func2(); // wypisze 3 func2(); // wypisze 4

Dlaczego więc nasz poprzedni kod tworzył niezależne liczniki? Przypomnę ten kod:

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

Chodzi o to, że zmienna num jest lokalna wewnątrz funkcji test. Dlatego każde wywołanie test tworzy swoją własną zmienną lokalną.

Dlatego zwracane funkcje będą odnosić się każda do swojej lokalnej zmiennej funkcji test. W ten sposób osiąga się niezależność działania.

Jeśli natomiast uczynimy num zmienną globalną - to również będzie domknięciem. Po prostu otoczenia leksykalne zwracanych funkcji odnoszą się do tej samej zmiennej num - jakiekolwiek zmiany tej zmiennej będą widoczne we wszystkich funkcjach.

Określ, bez uruchamiania kodu, co zostanie wypisane w konsoli:

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

Określ, bez uruchamiania kodu, co zostanie wypisane w konsoli:

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();

Określ, bez uruchamiania kodu, co zostanie wypisane w konsoli:

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();
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć