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ň:

javascriptfunction 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:

javascriptfunction 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:

javascriptfunction 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.

Задание 1

Özbaşyna, kodyma göz ýetirmän, ýapyşmalar arkaly işleýän funksiýa çagyryş sanaçyny amala aşyryň.

Задание 2

Funksiýanyň ýapyşmasynda 10 sanyny saklasyn. Funksiýanyň her çagyrylyşy bu sany 1 azaltmaly we azaldylan sany konsola çykarmaly bolar ediň.

Задание 3

Öňki meseläni üýtgediň, sanaw 0 ýetenden soň, her soňky funksiýa çagyrylyşy konsola sanawyň gutarandygyny bildiren habary çykarsyn.