Стрелочная функция — это простой способ создать функцию в ES6, которая не создает собственную ссылку this. Он всегда указывал на этот контекст, откуда он создается или вызывается.

Стрелочная функция не создает свою собственную область видимости, она всегда зависит от области, в которой она создается.

О функции стрелки:

  1. Он не имеет собственной привязки к this , аргументам или super и не должен использоваться как метод,
  2. Он не подходит для метода вызова, применения и привязки, который обычно основан на установлении области действия.
  3. Не может использоваться в качестве конструктора,
  4. Не может использовать метод Yield внутри своего тела,
  5. Не имеет доступа к ключевому слову new.target.
  6. У него нет свойства Prototype.

Новый оператор:

Функция стрелки не имеет конструктора, поэтому она не используется для создания экземпляра с ключевым словом new.

const test = (x,y) => x + y;
const result = new test();

Примечание: выдает ошибку: test не является конструктором

Не может использоваться в качестве метода:

Мы можем использовать его как метод, но всякий раз, когда у нас есть зависимость от этого объекта в методе, мы не можем его использовать.

const People = {
   name: 'angularfeed',
   getName: () => {
     return this.name;
   }
 }
 const result = People.getName();
 console.log(result); // throw undefined

Вышеупомянутый метод вернет неопределенное значение, поскольку контекст this установлен как глобальный, откуда вызывается метод getName, а имя свойства в глобальном объекте недоступно, тогда он возвращает неопределенное значение.

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

Свойство прототипа:

Стрелочная функция не имеет свойства прототипа

const Test = (x) => x;
const result = Test.prototype.name = 'angularfeed'; // undefined

Он выдаст неопределенное значение, потому что у стрелочной функции нет свойства с именем прототип.

Метод доходности:

Стрелочную функцию нельзя использовать в качестве генератора, так как внутри стрелочной функции не поддерживается yield.

звоните, применяйте и связывайте:

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

Литералы объекта:

Должен заключать литерал объекта в круглые скобки,

const Test = () => ({name: 'angularfeed'})

Синтаксис:

const Example = () => {} // returns undefined
(() => 'Hello World')() // return Hello World
const list = ['India', 'USA', 'Ireland'];
list.map((item, index) => {
  return `${item} has index ${index}`;
})

Использованная литература:

  1. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions