JavaScript-də Adlandırılmış Funksiya İfadələri
Tutaq ki, bizim belə bir funksiya ifadəsi var:
let test = function() {
console.log('!');
};
test(); // '!' çap edəcək
Gəlin funksiyamıza func adı verək:
let test = function func() {
console.log('!');
};
test();
Artıq bildiyiniz kimi, bu adla funksiyaya müraciət etmək olmaz:
let test = function func() {
console.log('!');
};
test(); // '!' çap edəcək
func(); // xəta verəcək
Əlçatan olmayacaqsa, funksiyaya niyə ad vermək lazımdır? Məsələ ondadır ki, bu ad funksiyanın xaricində əlçatan olmayacaq, lakin funksiyanın daxilində əlçatan olacaq.
Gəlin yoxlayaq:
let test = function func() {
console.log(func); // funksiya öz mənbə kodunu çap edəcək
};
test(); // funksiyanı çağırırıq
Gəlin funksiyamızı onun daxilində özü çağıraq:
let test = function func() {
console.log('!'); // '!' çap edirik
func(); // özümüzü çağırırıq
};
test();
Əgər bu kodu işə salsaq, konsola qeyri-məhdud sayda çap olunacaq.
Əslində, bizim funksiyamız özü daxilində təkcə func kimi deyil, həm də test kimi çağırıla bilər:
let test = function func() {
console.log('!');
test(); // özümüzü çağırırıq
};
test();
Fərq nədədir? Fərq ondadır ki, test adı sadəcə dəyişəndir. Skriptin işləməsi prosesində bizim funksiyamız başqa dəyişənə yazıla bilər və ya parametr kimi ötürülə bilər - bu zaman test dəyişəni ilə funksiya arasındakı əlaqə itirilə bilər.
func adı isə xüsusi olaraq funksiyanın öz daxilində özünə müraciət edə bilməsi üçün sərt şəkildə funksiyaya bağlıdır.
Funksiya adı olan belə Funksiya İfadələri adlandırılmış funksiya ifadələri adlanır.