Прежде чем углубляться в выражение именованной функции, давайте взглянем на объявление функции и выражение функции.
Объявление функции. Когда мы определяем функцию с помощью ключевого слова «function».
Выражение функции: когда мы присваиваем функцию переменной (var, let или const).
Теперь давайте посмотрим на выражения именованных функций.
Основное преимущество заключается в том, что это позволяет нам вызывать функцию изнутри функции, т. Е. Самоссылка.
Возьмем пример факториальной функции. Во-первых, мы пытаемся использовать анонимную функцию, назначенную переменной factorial, поэтому здесь мы используем функциональное выражение.
Теперь, если кто-то изменит использование нашего функционального выражения, тогда facto(5) вернет NaN вместо 120, и если мы присвоим факториальной переменной какое-то строковое значение, наш код сломается.
Функция факториала была назначена на facto, поэтому ее нужно выполнить, но это не так. Это происходит из-за того, что мы даем ссылку в функции с именем factorial и при изменении значения factorial на что-то другое ссылка теряется, но факто остается в функции.
Чтобы решить эту проблему, мы можем использовать здесь выражение именованной функции. Мы создаем функцию fact и присваиваем ей переменную factorial.
Теперь, даже после повторной инициализации factorial с другим значением (в строке номер 8), наша функция работает правильно, потому что теперь мы обращаемся к имени функции, а не к переменной . Таким образом, имя функции доступно внутри всей функции.
Примечание. Именованная функция, т. е. fact, недоступна вне функции
console.log(fact(5)); // ошибка
Преимущества выражения именованной функции:
- Ссылка на себя
- Используется для рекурсии
- Отмена привязки обработчиков кликов
Вот и все, если вы узнали что-то новое из этой статьи, не забудьте выразить свою поддержку аплодисментами 👏.