JavaScript-da Nomlangan Funksional Ifodalar
Faraz qilaylik, bizda quyidagi funksional ifoda mavjud:
let test = function() {
console.log('!');
};
test(); // '!' chiqadi
Keling, funksiyamizga func nomini beraylik:
let test = function func() {
console.log('!');
};
test();
Bilganingizdek, ushbu nom orqali funksiyani chaqirib bo'lmaydi:
let 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:
let test = function func() {
console.log(func); // funksiya o'zining boshlang'ich kodini chiqaradi
};
test(); // funksiyani chaqiramiz
Keling, funksiyani o'zining ichida chaqiramiz:
let 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:
let 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.