⊗jsPmClCNG 265 of 505 menu

Globalna promenljiva brojača u JavaScript-u

Iznosimo promenljivu num van funkcija, čineći je time globalnom:

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

U ovom slučaju sve vraćene funkcije će menjati ovu globalnu promenljivu i brojači će raditi zavisno jedan od drugog:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // prvi brojač func1(); // ispisaće 1 func1(); // ispisaće 2 let func2 = test(); // drugi brojač func2(); // ispisaće 3 func2(); // ispisaće 4

Zašto je onda naš prethodni kod pravio nezavisne brojače? Podsećam na ovaj kod:

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

Stvar je u tome što je promenljiva num - lokalna unutar funkcije test. Zato svaki poziv test stvara svoju lokalnu promenljivu.

Stoga će vraćene funkcije referisati svaka na svoju lokalnu promenljivu funkcije test. Upravo se tako postiže nezavisnost rada.

Ako se num napravi globalnom promenljivom - to će takođe biti zatvaranje. Samo što leksička okruženja vraćenih funkcija referišu na istu promenljivu num - bilo kakve promene ove promenljive videće se u svim funkcijama.

Odredite, bez pokretanja koda, šta će se ispisati u konzolu:

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

Odredite, bez pokretanja koda, šta će se ispisati u konzolu:

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

Odredite, bez pokretanja koda, šta će se ispisati u konzolu:

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();
Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij