Функция с име, но 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.