⊗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

Атрымліваецца, што мы рэалізавалі лічыльнік выкліку функцый, вiкарыстоўваючы замыканне (дакладней вiкарыстоўваючы пераменную 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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць