Funkcja z nazwą, ale Function Expression w JavaScript
Teraz utwórzmy funkcję, która będzie miała nazwę, ale jednocześnie będzie Function Expression, ponieważ uczestniczy w wyrażeniu:
+function func() {
console.log('!');
}
Co ciekawe, po nazwie func nie
będziemy mogli odwołać się do naszej funkcji, będzie to
prowadzić do błędu:
+function func() {
console.log('!');
}
func(); //!! da błąd
Aby mieć możliwość wywołania naszej funkcji, trzeba ją przypisać do jakiejś zmiennej:
let test = function func() {
console.log('!');
};
test(); // wypisze '!'
Jeszcze raz: funkcja będąca wyrażeniem funkcyjnym nie może być wywołana po jej nazwie. Taka funkcja może być wywołana tylko z wykorzystaniem zmiennej, do której została zapisana ta funkcja.
Ale niemniej jednak, wyrażenie funkcyjne może mieć nazwę funkcji, będzie to syntaktycznie prawidłowe. Do czego takie coś jest potrzebne, będziemy analizować w kolejnych lekcjach.
Podsumujmy: funkcje są Function Declaration lub Function Expression nie dlatego, że mają nazwę lub nie, ale dlatego, że są uczestnikami wyrażeń lub nie są.
Jak widzieliście powyżej, funkcja bez nazwy może zostać odebrana jako Function Declaration, a funkcja z nazwą może być Function Expression.