⊗jsPmClCr 263 of 505 menu

Бројач на затварањима у JavaScript-у

Хајде да препишемо код који смо разматрали тако да враћена функција сваки пут повећава вредност променљиве num за један:

function test() { let num = 1; return function() { console.log(num); num++; // додајемо један } } let func = test();

Испоставиће се да ће сваки позив функције func исписати нову вредност у конзолу:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //исписаће 1 func(); //исписаће 2 func(); //исписаће 3 func(); //исписаће 4 func(); //исписаће 5

Добијамо да смо имплементирали бројач позива функција, користећи затварање (тачније користећи променљиву num из затварања наше функције).

Имајте у виду да ће сваки позив функције test вратити нову функцију, која ће имати своје затварање. То значи да ће различити бројачи радити независно:

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

Испоставиће се да ће иста променљива num за различите функције имати различиту вредност!

То значи ако позовемо функцију test два пута, онда ће добијене из ње функције радити независно и свака од тих функција ће имати своју независну променљиву num.

Самостално, не поткрадајући се у мој код, имплементирајте бројач позива функције, који ради на затварањима.

Нека функција у затварању чува број 10. Направите тако да сваки позив функције смањи овај број за 1 и испише у конзолу смањени број.

Модификујте претходни задатак тако да одбројавање стигне до 0, а затим сваки следећи позив функције испише у конзолу поруку да је одбројавање завршено.

Српски
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
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј