Sobes.tech
Back to questions
Junior — Middle
77

Как отличается использование стрелочных функций от стандартных функций в JavaScript?

Answer from AI

sobes.tech AI

Стрелочные функции в JavaScript отличаются от стандартных функций несколькими ключевыми моментами:

  • Контекст this: В стрелочных функциях this лексически наследуется из окружающего контекста, то есть не создаёт собственного контекста this. В обычных функциях this зависит от того, как функция была вызвана.

  • Отсутствие arguments: Стрелочные функции не имеют собственного объекта arguments. Для доступа к аргументам нужно использовать параметры или внешние переменные.

  • Нельзя использовать как конструктор: Стрелочные функции нельзя вызвать с new, они не имеют внутреннего метода [[Construct]].

  • Синтаксис короче: Стрелочные функции обычно короче и удобнее для написания коротких функций.

Пример:

const obj = {
  value: 10,
  regularFunc: function() {
    console.log(this.value); // 10
  },
  arrowFunc: () => {
    console.log(this.value); // undefined или значение из внешнего контекста
  }
};

obj.regularFunc(); // выведет 10
obj.arrowFunc();   // выведет undefined

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