Sobes.tech
Назад к вопросам
Junior
90
questionbank

Что такое стрелочная функция?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Стрелочная функция (arrow function) — это синтаксически более краткая форма для написания функций в JavaScript (ES6+).

Ключевые особенности:

  • Синтаксис: (параметры) => выражение или { тело функции }.
  • this: Лексически связывает this, то есть берет его из окружающего контекста, а не создает свой собственный. Это главное отличие от обычных функций.
  • Отсутствие arguments: Нет собственного объекта arguments. Можно использовать rest-параметры (...args).
  • Отсутствие prototype: Не имеют свойства prototype и не могут использоваться в качестве конструкторов (new).
  • Автоматический return: Если тело функции состоит из одного выражения, результат этого выражения возвращается неявно (без ключевого слова return).

Примеры:

// Обычная функция
function sum(a, b) {
  return a + b;
}

// Стрелочная функция (краткий синтаксис)
const add = (a, b) => a + b;

// Стрелочная функция с блоком кода
const multiply = (a, b) => {
  const result = a * b;
  return result;
};

Сравнение this:

class MyClass {
  constructor() {
    this.value = 10;
  }

  // Обычный метод - this ссылается на экземпляр MyClass
  method() {
    console.log(this.value); // 10
  }

  // Стрелочная функция - this ссылается на this из constructor (экземпляр MyClass)
  arrowMethod = () => {
    console.log(this.value); // 10
  }

  callbackExample() {
    // Обычная функция теряет контекст this
    setTimeout(function() {
      console.log(this); // Window или undefined в строгом режиме
    }, 100);

    // Стрелочная функция сохраняет контекст this
    setTimeout(() => {
      console.log(this.value); // 10
    }, 100);
  }
}