⊗jsPmClCNG 265 of 505 menu

Globaalne loenduri muutuja JavaScriptis

Viime muutuja num funktsioonidest välja, muutes selle seeläbi globaalseks:

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

Sel juhul kõik tagastatud funktsioonid muudavad seda globaalset muutujat ja loendurid töötavad üksteisest sõltuvalt:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // esimene loendur func1(); // väljastab 1 func1(); // väljastab 2 let func2 = test(); // teine loendur func2(); // väljastab 3 func2(); // väljastab 4

Miks siis meie eelmine kood tegi sõltumatuid loendureid? Tuletan meelde seda koodi:

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

Asi on selles, et muutuja num on lokaalne funktsiooni test sees. Seetõttu iga test väljakutse loob oma lokaalse muutuja.

Seetõttu viitavad tagastatud funktsioonid igaüks oma funktsiooni test lokaalsele muutujale. Just nii saavutatakse sõltumatu töö.

Kui teha num globaalseks muutujaks - on see samuti sulund. Lihtsalt tagastatud funktsioonide leksikaalsed keskkonnad viitavad samale muutujale num - kõik muutused selle muutujaga on nähtavad kõigis funktsioonides.

Määrake, ilma koodi käivitamata, mis väljastatakse konsooli:

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

Määrake, ilma koodi käivitamata, mis väljastatakse konsooli:

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

Määrake, ilma koodi käivitamata, mis väljastatakse konsooli:

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();
Eesti
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Me kasutame saidi toimimiseks, analüüsi ja personaliseerimiseks küpsiseid. Andmete töötlemine toimub vastavalt Privaatsuspoliitikale.
nõustu kõigega häälesta keeldu