Что такое стрелочные функции в JavaScript и чем они отличаются от обычных?

Чем стрелочные функции отличаются от обычных функций? стрелочные функции — сокращённый синтаксис JavaScript для создания функций не формируют собственный контекст this, а наследуют его из внешней лексической области…

Короткий ответ

Что ответить на собеседовании

Чем стрелочные функции отличаются от обычных функций? стрелочные функции — сокращённый синтаксис JavaScript для создания функций не формируют собственный контекст this, а наследуют его из внешней лексической области (lexical this) не могут быть конструкторами и не вызываются через new не предоставляют собственный объект arguments не обладают методами prototype и super особенно удобны в колбеках, где важно сохранить контекст this обычные функции формируют собственный this, поддерживают перегрузку и представляют собой полноценные объекты-функции

Подробный разбор

Ответ с пояснениями

Чем стрелочные функции отличаются от обычных функций?

  • стрелочные функции — сокращённый синтаксис JavaScript для создания функций
  • не формируют собственный контекст this, а наследуют его из внешней лексической области (lexical this)
  • не могут быть конструкторами и не вызываются через new
  • не предоставляют собственный объект arguments
  • не обладают методами prototype и super
  • особенно удобны в колбеках, где важно сохранить контекст this
  • обычные функции формируют собственный this, поддерживают перегрузку и представляют собой полноценные объекты-функции

Поэтому стрелочные функции дают компактную запись и хорошо подходят для сценариев с лексическим this, однако не используются в классических случаях, связанных с конструкторами и методами.

Подробный ответ

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

Стрелочные функции (arrow functions) — сокращённый синтаксис объявления функций в JavaScript, добавленный в ES6. Их отличие от обычных функций заключается не только в компактной записи: у них иначе определяется this, отсутствует собственный объект arguments, а использовать их в роли конструкторов нельзя.

Ключевые моменты

  • this лексическое, а не динамическое: В стрелочной функции значение this наследуется из внешнего контекста. Это удобно, когда в колбеках и методах требуется сохранить контекст. У обычной функции значение this определяется способом её вызова.
  • Собственного объекта arguments нет: Обратиться к объекту arguments внутри стрелочной функции нельзя; для получения аргументов обычно применяют rest-параметры (...args).
  • В качестве конструктора не используется: У стрелочной функции отсутствует внутренний метод [[Construct]], поэтому попытка вызвать её через new завершится ошибкой.
  • Синтаксис более компактный: ключевое слово function не требуется, а в однострочных выражениях можно не писать фигурные скобки и ключевое слово return.

Практический контекст

Например, в React 18+ стрелочные функции широко применяют для объявления компонентов и обработчиков: они сохраняют контекст и помогают избежать проблем, связанных с this. В функциональных колбеках и промисах arrow functions также популярны благодаря краткости и удобству. Однако для функции-конструктора или метода, которому нужен динамический this, обычно выбирают классическую функцию.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

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

Начать подготовку