Найти тему
DevX

JavaScript. Стрелочные функции.

JavaScript
JavaScript

JavaScript предлагает два вида функций - обычные функции и стрелочные функции. Эти два типа функций имеют некоторые отличия, которые следует учитывать при выборе подходящего типа функции для вашего кода.

1. Синтаксис:

Одним из основных отличий является различный синтаксис для объявления функций.

Обычные функции имеют ключевое слово `function`, за которым следует имя функции и параметры в скобках, а затем тело функции в фигурных скобках.

Функция, объявленая с помощью ключевого слова function
Функция, объявленая с помощью ключевого слова function

Стрелочные функции имеют сокращенный синтаксис, где параметры заключены в скобки (если есть параметры) и тело функции представляет собой выражение или блок кода в фигурных скобках. Ключевое слово `function` опускается, а вместо него используется стрелка `=>`.

Пример стрелочной функции
Пример стрелочной функции

2. Привязка контекста:

В обычных функциях `this` привязывается динамически и определяется во время выполнения функции. Значение `this` зависит от контекста вызова функции.

Стрелочные функции не имеют своего собственного значения `this`. Вместо этого `this` берется из внешней области видимости, в которой они созданы. Это позволяет сохранять контекст выполнения функции.

3. Лексическая привязка:

У стрелочных функций лексическая привязка bedermined, что значит что значения переменных берутся из внешней области видимости на момент создания функции, а не на момент вызова функции.

Обычные функции имеют динамическую лексическую привязку, что означает, что они могут использовать значения переменных только во время вызова функции, а не на момент создания.

4. Использование ключевого слова return:

У стрелочных функций, если тело функции состоит только из одной инструкции, то она будет автоматически возвращать результат этой инструкции, без необходимости использовать ключевое слово return.

В обычных функциях необходимо явно указывать ключевое слово return, чтобы вернуть значение.

5. Использование ключевого слова arguments:

У обычных функций доступен объект `arguments`, который представляет все параметры функции в виде псевдомассива. Это позволяет функции работать с переменным количеством аргументов.

У стрелочных функций нет своего собственного объекта `arguments`. Однако, вы можете использовать оператор расширения `...`, чтобы получить доступ к аргументам внешней функции.

Стрелочные и обычные функции имеют разные особенности и подходят для разных сценариев. Обычно стрелочные функции используются при работе с простыми функциями, которые не требуют привязки контекста или доступа к `this`. Однако, если вам нужно использовать `this` или `arguments`, вам может потребоваться использовать обычные функции.