JavaScript-da Ýapyşmalar Arkaly Sanaç
Gözden geçiren kodymyzy ýazyp, gaýdarylan funksiýa
her gezek num üýtgeýjisiniň bahasyny
bir birlik artdyryp durmagyny üpjün edeliň:
function test() {
let num = 1;
return function() {
console.log(num);
num++; // bir birlik goşýarys
}
}
let func = test();
Şeýlelikde, func funksiýasynyň her çagyrylyşy
konsola täze baha çykarar:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
}
}
let func = test();
func(); //1 çykarar
func(); //2 çykarar
func(); //3 çykarar
func(); //4 çykarar
func(); //5 çykarar
Demek, biz ýapyşmany (deslap ýapyşmanyň num
üýtgeýjisini) ulanmak arkaly funksiýa çagyryş
sanaçyny amala aşyrdyk.
Ýadyňyzdan çykarmaň, test funksiýasynyň
her çagyrylyşy täze funksiýa gaýtarar, onuň
öz ýapyşmasy bolar. Ýagny dürli sanaçlar
özara baglylykda işlemez:
function test() {
let num = 1;
return function() {
console.log(num);
num++;
};
}
let func1 = test(); // birinji sanaç
func1(); //1 çykarar
func1(); //2 çykarar
let func2 = test(); // ikinji sanaç
func2(); //1 çykarar
func2(); //2 çykarar
Demek, birmeňzeş num üýtgeýjisi
dürli funksiýalar üçin dürli baha alar!
Ýagny, test funksiýasyny iki gezek
çagyrsak, ondan alynan funksiýalar
özara baglylykda işler we bu funksiýalaryň
her biri özara bagly däl num
üýtgeýjisine ege bolar.
Özbaşyna, kodyma göz ýetirmän, ýapyşmalar arkaly işleýän funksiýa çagyryş sanaçyny amala aşyryň.
Funksiýanyň ýapyşmasynda 10 sanyny saklasyn.
Funksiýanyň her çagyrylyşy bu sany
1 azaltmaly we azaldylan sany
konsola çykarmaly bolar ediň.
Öňki meseläni üýtgediň, sanaw
0 ýetenden soň, her soňky
funksiýa çagyrylyşy konsola sanawyň
gutarandygyny bildiren habary çykarsyn.