⊗jsPmClCNG 265 of 505 menu

Globálna premenná počítadla v JavaScripte

Premennú num vyberieme mimo funkcií, čím ju urobíme globálnou:

let num = 1; // globálna premenná function test() { return function() { console.log(num); num++; }; }

V tomto prípade budú všetky vrátené funkcie meniť túto globálnu premennú a počítadlá budú pracovať už závisle od seba:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // prvé počítadlo func1(); // vypíše 1 func1(); // vypíše 2 let func2 = test(); // druhé počítadlo func2(); // vypíše 3 func2(); // vypíše 4

Prečo náš predchádzajúci kód robil nezávislé počítadlá? Pripomínam tento kód:

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

Vec sa má tak, že premenná num je lokálna vo vnútri funkcie test. Preto každé volanie test vytvorí svoju vlastnú lokálnu premennú.

Preto sa vrátené funkcie budú odkazovať každá na svoju lokálnu premennú funkcie test. Práve tak sa dosiahne nezávislosť činnosti.

Ak sa num urobí globálnou premennou - bude to tiež uzávierka. Jednoducho lexikálne prostredia vrátených funkcií sa odkazujú na rovnakú premennú num - akékoľvek zmeny tejto premennej budú viditeľné vo všetkých funkciách.

Určte, bez spustenia kódu, čo sa vypíše do konzoly:

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

Určte, bez spustenia kódu, čo sa vypíše do konzoly:

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

Určte, bez spustenia kódu, čo sa vypíše do konzoly:

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();
Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť