JavaScript'те ат аталган функциялык өрнөктөр
Бизде мындай функциялык өрнөк болсун:
let test = function() {
console.log('!');
};
test(); // '!' чыгарат
Келгиле, биздин функциябызга func деген ат берели:
let test = function func() {
console.log('!');
};
test();
Билип тургандай, бул ат менен функцияга кайрылууга болбойт:
let test = function func() {
console.log('!');
};
test(); // '!' чыгарат
func(); // ката берет
Анда колдонулушу мүмкүн эмес атты эмне үчүн берүү керек? Бул ат функциянын сыртынан жеткиликтүү болбойт, бирок функциянын ичинде жеткиликтүү болот.
Келгиле, текшерип көрөлү:
let test = function func() {
console.log(func); // функция өзүнүн баштапкы кодуун чыгарат
};
test(); // функцияны чакырабыз
Келгиле, функциябызды анын ичинде өзүн чакыралы:
let test = function func() {
console.log('!'); // '!' чыгарабыз
func(); // өзүбүздү чакырабыз
};
test();
Эгерде бул кодду иштетсек, анда консольго чексиз сандаган жазуулар чыгат.
Чындыгында, биздин функция өзүнүн ичинде гана func
эмес, ошондой эле test катары да чакырылышы мүмкүн:
let test = function func() {
console.log('!');
test(); // өзүбүздү чакырабыз
};
test();
Анда айырмасы эмнеде? Айырмасы мында: test аты -
бул жөнөкөй өзгөрмө. Скрипт иштеген учурда биздин функция
башка өзгөрмөгө жазылышы же параметр катары өтүп кетиши
мүмкүн - бул учурда test өзгөрмөсү менен функциянын
ортосундагы байланыш үзүлүшү мүмкүн.
func аты болсо, функцияга анын ичинде өзүнө кайрылуу
үчүн атайылап функцияга бекем байланышкан.
Функциянын аты менен мындай Function Expression'дор ат аталган функциялык өрнөктөр деп аталат.