Функциональное выражение (function expression) — это определение функции внутри другого выражения или конструкции. В отличие от Function Declaration, Function Expression не "поднимается" (hoisted) в область видимости перед выполнением кода. Это означает, что функция становится доступной только после того, как исполнение кода достигнет строки с её определением.
Типы функциональных выражений:
Именованные функциональные выражения:
javascript
Имя namedFunction доступно только внутри самой функции (для рекурсии, например), а снаружи функция вызывается по имени переменной myFunc.
Анонимные функциональные выражения:
javascript
У функции нет имени, снаружи она вызывается исключительно по имени переменной anotherFunc.
Стрелочные функции (Arrow Functions):
javascript
Более лаконичный синтаксис, с особенностей по работе с this и arguments. Являются анонимными по своей природе, но присваиваются переменной.
Назначение и применение:
Присваивание переменной: Позволяет сохранить функцию в переменной и передавать её как значение.
javascript
Передача как аргумент: Функции можно передавать в другие функции (callback-функции).
javascript
Определение внутри объекта: Функции могут быть методами объектов.
javascript
Создание замыканий: Функциональные выражения часто используются для создания замыканий, сохраняя доступ к переменным из внешней области видимости.
javascript
Инкапсуляция: Могут использоваться для создания модулей или самовызывающихся анонимных функций (IIFE) для инкапсуляции кода и избегания загрязнения глобальной области видимости.
javascript