⊗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ščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне