Junior
25
0
questionbank

В чем разница между стрелочными функциями и обычными функциями в JavaScript?

Ответ от нейросети sobes.tech
  1. Синтаксис:
    • Обычная функция: function myFunction() { ... }
    • Стрелочная функция: () => { ... } или param => { ... }
  2. Контекст this:
    • Обычная функция: this определяется контекстом вызова.
    • Стрелочная функция: this лексически наследуется из окружающей области видимости (не имеет собственного this).
  3. Конструкторы:
    • Обычная функция: Может быть использована как конструктор (new myFunction()).
    • Стрелочная функция: Не может быть использована как конструктор.
  4. Объект arguments:
    • Обычная функция: Имеет собственный объект arguments, содержащий переданные аргументы.
    • Стрелочная функция: Не имеет собственного объекта arguments, доступ к аргументам осуществляется через rest-параметры (...args).
  5. Именованные функции:
    • Обычная функция: Может быть именованной (function myFunction() { ... }).
    • Стрелочная функция: Анонимна по умолчанию, присваивается переменной для именования (const myFunction = () => { ... }).
  6. Return Implicit (неявный возврат):
    • Обычная функция: Требует явного использования return для возврата значения (кроме простых случаев, как IIFE).
    • Стрелочная функция: При однострочном теле может неявно возвращать результат выражения без return.

Таблица сравнения:

ХарактеристикаОбычная функцияСтрелочная функция
Синтаксисfunction name() { ... }() => { ... }
Контекст thisДинамический (контекст вызова)Лексический (родительской области)
Конструктор
  1. Синтаксис:
    • Обычная функция: function myFunction() { ... }
    • Стрелочная функция: () => { ... } или param => { ... }
  2. Контекст this:
    • Обычная функция: this определяется контекстом вызова.
    • Стрелочная функция: this лексически наследуется из окружающей области видимости (не имеет собственного this).
  3. Конструкторы:
    • Обычная функция: Может быть использована как конструктор (new myFunction()).
    • Стрелочная функция: Не может быть использована как конструктор.
  4. Объект arguments:
    • Обычная функция: Имеет собственный объект arguments, содержащий переданные аргументы.
    • Стрелочная функция: Не имеет собственного объекта arguments, доступ к аргументам осуществляется через rest-параметры (...args).
  5. Именованные функции:
    • Обычная функция: Может быть именованной (function myFunction() { ... }).
    • Стрелочная функция: Анонимна по умолчанию, присваивается переменной для именования (const myFunction = () => { ... }).
  6. Return Implicit (неявный возврат):
    • Обычная функция: Требует явного использования return для возврата значения (кроме простых случаев, как IIFE).
    • Стрелочная функция: При однострочном теле может неявно возвращать результат выражения без return.

Таблица сравнения:

ХарактеристикаОбычная функцияСтрелочная функция
Синтаксисfunction name() { ... }() => { ... }
Контекст thisДинамический (контекст вызова)Лексический (родительской области)
Конструктор

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

javascriptarrow-functionsfunction-declarationthis-bindinglexical-scope