Števec s sklopitvami v JavaScript
Prepišimo obravnavano kodo
tako, da vrnitvena funkcija vsakič
poveča vrednost spremenljivke num
za ena:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // prištejemo ena
}
}
let func = test();
Izkazalo se bo, da bo vsak klic funkcije func
v konzolo izpisal novo vrednost:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //izpiše 1
func(); //izpiše 2
func(); //izpiše 3
func(); //izpiše 4
func(); //izpiše 5
Izkazalo se je, da smo implementirali števec klicov
funkcij z uporabo sklopitve (natančneje z uporabo
spremenljivke num iz sklopitve naše funkcije).
Upoštevajte, da bo vsak klic funkcije test
vrnil novo funkcijo, ki bo imela
svojo sklopitev. To pomeni, da bodo različni števci
delovali neodvisno:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // prvi števec
func1(); //izpiše 1
func1(); //izpiše 2
let func2 = test(); // drugi števec
func2(); //izpiše 1
func2(); //izpiše 2
Izkazalo se je, da bo imela ista spremenljivka num
za različne funkcije različno vrednost!
To pomeni, če pokličemo funkcijo test
dvakrat, bodo funkcije, pridobljene iz nje,
delovale neodvisno in vsaka od
teh funkcij bo imela svojo neodvisno
spremenljivko num.
Samostojno, brez zaganjanja v mojo kodo, implementirajte števec klicev funkcije, ki deluje s sklopitvami.
Naj funkcija v sklopitvi hrani število 10.
Poskrbite, da vsak klic funkcije
zmanjša to število za 1 in izpiše
v konzolo zmanjšano število.
Modificirajte prejšnjo nalogo tako, da
odštevanje doseže 0, nato pa vsak
naslednji klic funkcije izpiše v konzolo
sporočilo, da je odštevanje končano.