⊗jsPmClCNG 265 of 505 menu

Global tællevariabel i JavaScript

Lad os flytte variablen num uden for funktionerne, herved gøre den global:

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

I dette tilfælde vil alle returnerede funktioner ændre denne globale variabel, og tællere vil arbejde afhængigt af hinanden:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // første tæller func1(); // udskriver 1 func1(); // udskriver 2 let func2 = test(); // anden tæller func2(); // udskriver 3 func2(); // udskriver 4

Hvorfor skabte vores foregående kode uafhængige tællere? Lad mig huske denne kode:

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

Faktum er, at variablen num er lokal inde i funktionen test. Derfor skaber hvert kald til test sin egen lokale variabel.

Derfor vil de returnerede funktioner henvise hver til deres egen lokale variabel af funktionen test. Det er sådan, uafhængighed opnås.

Hvis man derimod gør num til en global variabel - vil det også være en lukning. Det er bare, at de leksikalske miljøer for de returnerede funktioner henviser til den samme variabel num - enhver ændring af denne variabel vil være synlig i alle funktioner.

Bestem, uden at køre koden, hvad der udskrives 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, uden at køre koden, hvad der udskrives 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, uden at køre koden, hvad der udskrives 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();
Dansk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDeutschΕλληνικά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
Vi bruger cookies til webstedets funktion, analyse og personalisering. Behandling af data foregår i henhold til Fortrolighedspolitikken.
accepter alle tilpas afvis