Sobes.tech
Junior — Middle
87

Care sunt diferențele dintre funcțiile săgeată și funcțiile standard în JavaScript din punct de vedere al sintaxei și comportamentului?

Răspuns de la AI

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 или конструктор.