Функция с име, но Function Expression в JavaScript

Нека сега направим функция, която ще има име, но въпреки това ще бъде Function Expression, защото участва в израз:

javascript+function func() {
  console.log('!');
}

Интересното е, че по име func ние няма да можем да се обърнем към нашата функция, това ще води до грешка:

javascript+function func() {
  console.log('!');
}

func(); //!! ще даде грешка

За да имаме възможност да извикаме нашата функция, тя трябва да бъде присвоена на някаква променлива:

javascriptlet test = function func() {
  console.log('!');
};

test(); // ще изведе '!'

Още веднъж: функция, която е функционално изражение, не може да бъде извикана по нейното име. Такава функция може да бъде извикана само с използването на променливата, в която е била записана тази функция.

Но въпреки това, функционалното изражение може да има име на функция, това ще бъде синтактично коректно. Защо е нужно такова нещо, ще разглеждаме в следващите уроци.

Да обобщим: функциите са Function Declaration или Function Expression не защото имат име или нямат, а защото са участници в изрази или не са.

Както видяхте по-горе, функция без име може да бъде възприета като Function Declaration, а функция с име може да бъде Function Expression.