⊗jsPmClCNG 265 of 505 menu

Глобална променљива бројача у JavaScript-у

Избацимо променљиву num изван функција, чиме је чинимо глобалном:

let num = 1; // глобална променљива function test() { return function() { console.log(num); num++; }; }

У овом случају све функције које се враћају ће мењати ову глобалну променљиву и бројачи ће већ радити зависно једни од других:

let num = 1; function test() { return function() { console.log(num); num++; }; } let func1 = test(); // први бројач func1(); // исписаће 1 func1(); // исписаће 2 let func2 = test(); // други бројач func2(); // исписаће 3 func2(); // исписаће 4

Зашто је наш претходни код правио независне бројаче? Подсећам на овај код:

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

Ствар је у томе што је променљива num - локална унутар функције test. Зато сваки позив test ствара своју локалну променљиву.

Зато ће враћене функције референцирати свака на своју локалну променљиву функције test. Тако се и постиже независност рада.

Ако се num направи глобалном променљивом - то ће такође бити затварање. Само ће лексичка окружења враћених функција референцирати исту променљиву num - било које промене са овом променљивом биће видљиве у свим функцијама.

Одредите, без покретања кода, шта ће бити исписано у конзолу:

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

Одредите, без покретања кода, шта ће бити исписано у конзолу:

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

Одредите, без покретања кода, шта ће бити исписано у конзолу:

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();
Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј