Отличия от обычных

  1. Контекст выполнения (this): В стрелочных функциях значение this берется из окружающего контекста, а не создается новым.
  2. Невозможность использования в качестве конструкторов: Стрелочные функции не могут быть использованы для создания новых объектов с помощью оператора new. Они не имеют своего собственного this, поэтому не могут быть вызваны как конструкторы.
  3. Отсутствие своего собственного контекста выполнения: В обычных функциях можно определять свои собственные переменные argumentssuper, и new.target. В стрелочных функциях такой возможности нет.
  4. Стрелочные функции не могут быть использованы как конструкторы для создания объектов с помощью оператора new. (не ведут себя как конструктор для объектов)
    1. No prototype property:
      ts function greet(name: string): void { console.log(`Hello, ${name}!`); } console.log(greet.prototype); // {constructor: ƒ greet}
    2. Методы объекта prototype: Нет callapply и bind, которые можно использовать для изменения контекста this
  5. No super keyword
  6. No explicit return
  7. No yield keyword: Arrow functions cannot be used as generators and do not have access to the yield keyword.