JavaScript-da Nomlangan Funksional Ifodalar
Faraz qilaylik, bizda quyidagi funksional ifoda mavjud:
javascriptlet test = function() {
console.log('!');
};
test(); // '!' chiqadi
Keling, funksiyamizga func nomini beraylik:
javascriptlet test = function func() {
console.log('!');
};
test();
Bilganingizdek, ushbu nom orqali funksiyani chaqirib bo'lmaydi:
javascriptlet test = function func() {
console.log('!');
};
test(); // '!' chiqadi
func(); // xatolik beradi
U holda, funksiyaga nom berish nima uchun kerak, agar u ishlatilmaydigan bo'lsa? Gap shundaki, bu nom funksiyadan tashqarida ishlatilmaydi, lekin funksiya ichida ishlatilishi mumkin.
Keling, tekshiramiz:
javascriptlet test = function func() {
console.log(func); // funksiya o'zining boshlang'ich kodini chiqaradi
};
test(); // funksiyani chaqiramiz
Keling, funksiyani o'zining ichida chaqiramiz:
javascriptlet test = function func() {
console.log('!'); // '!' chiqaramiz
func(); // o'zimizni o'zimiz chaqiramiz
};
test();
Agar ushbu kod ishga tushirilsa, konsolga cheksiz sonli chiqishlar chiqadi.
Aslida, bizning funksiyamiz nafaqat func sifatida,
balki test sifatida ham chaqirilishi mumkin:
javascriptlet test = function func() {
console.log('!');
test(); // o'zimizni o'zimiz chaqiramiz
};
test();
Farqi nima? Farq shundaki, test nomi
shunchaki o'zgaruvchidir. Skript ishlashi jarayonida
bizning funksiyamiz boshqa o'zgaruvchiga yozilishi
yoki parametr sifatida uzatilishi mumkin
- bu holda test o'zgaruvchisi
va funksiya o'rtasidagi bog'liqlik yo'qolishi mumkin.
func nomi esa funksiyaga qat'iy bog'langan
bo'lib, aynan shu funksiyani o'z ichida chaqirish
imkoniyati uchun mo'ljallangan.
Funksiya nomi bilan ifodalangan shunday Function Expression'lar nomlangan funksional ifodalar deb ataladi.