⊗jsPmClCNG 265 of 505 menu

Globaali laskurimuuttuja JavaScriptissä

Siirretään muuttuja num funktioiden ulkopuolelle, tehden siitä näin globaalin:

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

Tässä tapauksessa kaikki palautetut funktiot muuttavat tätä globaalia muuttujaa ja laskurit toimivat riippuvaisina toisistaan:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // ensimmäinen laskuri func1(); // tulostaa 1 func1(); // tulostaa 2 let func2 = test(); // toinen laskuri func2(); // tulostaa 3 func2(); // tulostaa 4

Miksi sitten edellinen koodimme loi itsenäisiä laskureita? Muistutan tästä koodista:

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

Asia on siinä, että muuttuja num on paikallinen funktion test sisällä. Siksi jokainen funktion test kutsu synnyttää oman paikallisen muuttujansa.

Siksi palautetut funktiot viittaavat kukin omaan funktion test paikalliseen muuttujaansa. Näin itsenäinen toiminta saavutetaan.

Jos num tehdään globaaliksi muuttujaksi - se on myös sulkeuma. Palautettujen funktioiden leksikaaliset ympäristöt viittaavat samaan muuttujaan num - kaikki muutokset tässä muuttujassa näkyvät kaikissa funktioissa.

Päätä, suorittamatta koodia, mitä tulostetaan konsoliin:

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

Päätä, suorittamatta koodia, mitä tulostetaan konsoliin:

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

Päätä, suorittamatta koodia, mitä tulostetaan konsoliin:

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();
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää