⊗jsPmClCNG 265 of 505 menu

Global variabel for teller i JavaScript

La oss flytte variabelen num utenfor funksjonene, og dermed gjøre den global:

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

I dette tilfellet vil alle de returnerte funksjonene endre denne globale variabelen og tellerne vil nå jobbe avhengig av hverandre:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // første teller func1(); // skriver ut 1 func1(); // skriver ut 2 let func2 = test(); // andre teller func2(); // skriver ut 3 func2(); // skriver ut 4

Hvorfor skilte vår forrige kode ut uavhengige tellere? La meg minne om denne koden:

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

Saken er at variabelen num er lokal inni funksjonen test. Derfor skaper hvert kall til test sin egen lokale variabel.

Derfor vil de returnerte funksjonene referere hver til sin egen lokale variabel av funksjonen test. Det er slik uavhengighet oppnås.

Hvis du derimot gjør num til en global variabel - vil dette også være en lukning. Bare de leksikalske omgivelsene til de returnerte funksjonene refererer til den samme variabelen num - alle endringer av denne variabelen vil være synlige i alle funksjoner.

Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:

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

Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:

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

Bestem, uten å kjøre koden, hva som vil skrives ut i konsollen:

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();
Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis