⊗jsPmClCr 263 of 505 menu

Brojač na zatvaranjima u JavaScript-u

Hajde da prepišemo kod koji smo razmotrili tako da vraćena funkcija svaki put uvećava vrednost promenljive num za jedan:

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

Ispostavlja se da će svaki poziv funkcije func ispisivati novu vrednost u konzolu:

function test() { let num = 1; return function() { console.log(num); num++; } } let func = test(); func(); //ispisaće 1 func(); //ispisaće 2 func(); //ispisaće 3 func(); //ispisaće 4 func(); //ispisaće 5

Ispostavlja se da smo implementirali brojač poziva funkcija, koristeći zatvaranje (tačnije koristeći promenljivu num iz zatvaranja naše funkcije).

Imajte u vidu da će svaki poziv funkcije test vraćati novu funkciju, koja će imati svoje vlastito zatvaranje. To znači da će različiti brojači raditi nezavisno:

function test() { let num = 1; return function() { console.log(num); num++; }; } let func1 = test(); // prvi brojač func1(); //ispisaće 1 func1(); //ispisaće 2 let func2 = test(); // drugi brojač func2(); //ispisaće 1 func2(); //ispisaće 2

Ispostavlja se da će ista promenljiva num za različite funkcije imati različitu vrednost!

To znači da ako pozovemo funkciju test dva puta, tada će funkcije dobijene iz nje raditi nezavisno i svaka od tih funkcija će imati svoju nezavisnu promenljivu num.

Samostalno, ne zagledajući se u moj kod, implementirajte brojač poziva funkcije, koji radi na zatvaranjima.

Neka funkcija u zatvaranju čuva broj 10. Uredite tako da svaki poziv funkcije smanji ovaj broj za 1 i ispiše u konzolu smanjeni broj.

Modifikujte prethodni zadatak tako da odbrojavanje stigne do 0, a zatim svaki svaki naredni poziv funkcije ispiše u konzolu poruku da je odbrojavanje završeno.

Srpski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Koristimo kolačiće za rad sajta, analitiku i personalizaciju. Obrada podataka se vrši u skladu sa Politikom privatnosti.
prihvati sve podesi odbij