⊗jsPmClCNG 265 of 505 menu

Global räknarvariabel i JavaScript

Låt oss flytta variabeln num utanför funktionerna, och därigenom göra den global:

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

I detta fall kommer alla returnerade funktioner att ändra denna globala variabel och räknarna kommer att arbeta beroende av varandra:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // första räknaren func1(); // skriver ut 1 func1(); // skriver ut 2 let func2 = test(); // andra räknaren func2(); // skriver ut 3 func2(); // skriver ut 4

Varför skapade vår föregående kod oberoende räknare? Låt mig påminna om den koden:

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

Saken är att variabeln num är lokal inuti funktionen test. Därför skapar varje anrop till test sin egen lokala variabel.

Därför kommer de returnerade funktionerna att referera var och en till sin egen lokala variabel i funktionen test. Det är på detta sätt som oberoende arbete uppnås.

Om man däremot gör num till en global variabel - kommer det också att vara en stängning. Det är bara att de lexiska omgivningarna för de returnerade funktionerna refererar till samma variabel num - alla ändringar av denna variabel kommer att synas i alla funktioner.

Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:

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

Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:

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

Avgör, utan att köra koden, vad som kommer att skrivas ut i konsolen:

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();
Svenska
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi använder kakor för webbplatsens funktion, analys och personalisering. Behandling av data sker i enlighet med Integritetspolicyn.
acceptera alla anpassa avvisa