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