⊗jsPmClCNG 265 of 505 menu

Globální proměnná čítače v JavaScriptu

Vyneseme proměnnou num mimo funkce, tím ji uděláme globální:

let num = 1; // globální proměnná function test() { return function() { console.log(num); num++; }; }

V tomto případě všechny vrácené funkce budou měnit tuto globální proměnnou a čítače již budou pracovat závisle na sobě:

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

Proč tedy náš předchozí kód dělal nezávislé čítače? Připomenu tento kód:

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

Jde o to, že proměnná num je lokální uvnitř funkce test. Proto každé volání test vytváří svou vlastní lokální proměnnou.

Proto se vrácené funkce budou odkazovat každá na svou vlastní lokální proměnnou funkce test. Právě tak se dosáhne nezávislosti práce.

Pokud se num udělá globální proměnnou - bude to také uzávěra. Prostě lexikální prostředí vrácených funkcí se odkazují na stejnou proměnnou num - jakékoli změny této proměnné budou viditelné ve všech funkcích.

Určete, bez spuštění kódu, co se vypíše do konzole:

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čete, bez spuštění kódu, co se vypíše do konzole:

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čete, bez spuštění kódu, co se vypíše do konzole:

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();
Čeština
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používáme soubory cookie pro fungování webu, analýzu a personalizaci. Zpracování údajů probíhá v souladu s Zásadami ochrany osobních údajů.
přijmout vše přizpůsobit odmítnout