Sobes.tech
Junior — Middle
65

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

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

sobes.tech AI

Стрелочные функции (arrow functions) в JavaScript отличаются от стандартных функций по синтаксису и поведению:

  1. Синтаксис:
    • Стрелочные функции короче, не требуют ключевого слова function и могут иметь неявный возврат значения.
// Стандартная функция
function sum(a, b) {
  return a + b;
}

// Стрелочная функция
const sum = (a, b) => a + b;
  1. Контекст this:
    • В стрелочных функциях this лексически привязан к контексту, в котором функция была объявлена.
    • В стандартных функциях this зависит от того, как функция вызвана.
const obj = {
  value: 10,
  method: function() {
    setTimeout(function() {
      console.log(this.value); // undefined, т.к. this указывает на глобальный объект
    }, 100);
  },
  arrowMethod: function() {
    setTimeout(() => {
      console.log(this.value); // 10, т.к. стрелочная функция берет this из метода
    }, 100);
  }
};
  1. Отсутствие arguments:

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

    • Стрелочные функции нельзя вызвать с new.

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