⊗jsPmClCNG 265 of 505 menu

Globālā skaitītāja mainīgā JavaScript

Izņemsim mainīgo num ārpus funkcijām, tādējādi padarot to par globalu:

let num = 1; // globālais mainīgais function test() { return function() { console.log(num); num++; }; }

Šajā gadījumā visas atgrieztās funkcijas mainīs šo globalo mainīgo un skaitītāji strādās atkarīgi viens no otra:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // pirmais skaitītājs func1(); // izvadīs 1 func1(); // izvadīs 2 let func2 = test(); // otrais skaitītājs func2(); // izvadīs 3 func2(); // izvadīs 4

Kāpēc tad mūsu iepriekšējais kods veidoja neatkarīgus skaitītājus? Atgādināšu šo kodu:

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

Lieta ir tāda, ka mainīgais num - lokāls funkcijas test iekšienē. Tāpēc katrs test izsaukums rada savu lokālo mainīgo.

Tāpēc atgrieztās funkcijas atsauksies katra uz savu funkcijas test lokālo mainīgo. Tieši tā tiek panākta neatkarīga darbība.

Ja padara num par globalu mainīgo - tas arī būs aizvērums. Vienkārši leksiskās vides atgrieztajām funkcijām atsaucas uz vienu un to pašu mainīgo num - jebkādas izmaiņas šajā mainīgajā būs redzamas visās funkcijās.

Noteikt, nepalaist kodu, kas tiks izvadīts konsolē:

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

Noteikt, nepalaist kodu, kas tiks izvadīts konsolē:

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

Noteikt, nepalaist kodu, kas tiks izvadīts konsolē:

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();
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt