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

← →
↑
en ru