JavaScript-daky Atly Funksional Ifadeler

Bizde şeýle funksional ifade bar bolsun:

javascriptlet test = function() {
  console.log('!');
};

test(); // '!' çap eder

Geliň funksiýamyza func atyny bereliň:

javascriptlet test = function func() {
  console.log('!');
};

test();

Bilindigiňiz ýaly, bu at bilen funksiýa çagyrylmaýar:

javascriptlet test = function func() {
  console.log('!');
};

test(); // '!' çap eder
func(); // säwlik bereder

Eger funksiýa çagyrylmaýan bolsa, näme üçin oňa at bermeli? Sebäbi, bu at funksiýanyň daşynda elýeterli däl, ýöne funksiýanyň içinde elýeterli bolar.

Geliň barlalyň:

javascriptlet test = function func() {
  console.log(func); // funksiýa öz çeşmesini çap eder
};

test(); // funksiýany çagyrýarys

Geliň funksiýamyzy öz içinde çagyralyň:

javascriptlet test = function func() {
  console.log('!'); // '!' çap edýäris
  func(); // özümizi çagyrýarys
};

test();

Eger bu kody işletsek, konsola çykyşlar çäksiz mukdarda dowam eder.

Aslynda, funksiýamyz öz içinde diňe func hökmünde däl, eýsem test hökmünde hem çagyrylyp bilner:

javascriptlet test = function func() {
  console.log('!');
  test(); // özümizi çagyrýarys
};

test();

Tapawudy näme? Tapawut şonda ýatýar, test at diňe üýtgeýän görnüşi. Skriptiň işleýişi dowamynda funksiýamyz başga bir üýtgeýjä ýazylýar ýa-da parametr hökmünde geçirilip bilner - bu ýagdaýda test üýtgeýjisi bilen funksiýa arasyndaky baglanyşyk ýitip biler.

func aty bolsa, diňe funksiýanyň içinden ýüzlenmek üçin funksiýa berk baglanyşdyrylan.

Funksiýanyň aty bilen şeýle Function Expression-lar atly funksional ifadeler diýilýär.