Функцыя з імем, але Function Expression у JavaScript
Давайце цяпер зробім функцыю, якая будзе мець імя, але пры гэтым будзе Function Expression, таму што ўдзельнічае ў выразе:
+function func() {
console.log('!');
}
Цікава, што па імені func мы не
зможам звярнуцца да нашай функцыі, гэта будзе
прыводзіць да памылкі:
+function func() {
console.log('!');
}
func(); //!! выдасць памылку
Каб мець магчымасць выклікаць нашу функцыю, яе трэба прысвоіць якой-небудзь зменнай:
let test = function func() {
console.log('!');
};
test(); // выведзе '!'
Яшчэ раз: функцыя, якая з'яўляецца функцыянальным выразам не можа быць выклікана па яе імені. Такая функцыя можа быць выклікана толькі з выкарыстаннем зменнай, у якую была запісана гэтая функцыя.
Але тым не менш, функцыянальны выраз можа мець імя функцыі, гэта будзе сінтаксічна карэктна. Навошта такое трэба, мы будзем разбірацца ў наступных уроках.
Падвядзем вынік: функцыі з'яўляюцца Function Declaration або Function Expression не таму, што маюць імя ці не маюць, а таму, што з'яўляюцца ўдзельнікамі выразаў ці не з'яўляюцца.
Як вы бачылі вышэй, функцыя без імені можа быць успрынята як Function Declaration, а функцыі з імем можа быць Function Expression.