Sont "Flèche Fonctions' et 'Fonctions' équivalent / échangeables?

Flèche fonctions dans ES2015 fournir une syntaxe plus concise.

  • Puis-je remplacer toutes mes déclarations de fonction /expressions avec flèche fonctions maintenant?
  • Que dois-je faire attention?

Exemples:

Fonction constructeur

function User(name) {
  this.name = name;
}

//vs

const User = name => {
  this.name = name;
};

Prototype des méthodes

User.prototype.getName = function() {
  return this.name;
};

//vs

User.prototype.getName = () => this.name;

Objet (littérale) de méthodes

const obj = {
  getName: function() {
    //...
  }
};

//vs

const obj = {
  getName: () => {
    //...
  }
};

Rappels

setTimeout(function() {
  //...
}, 500);

//vs

setTimeout(() => {
  //...
}, 500);

Variadic fonctions

function sum() {
  let args = [].slice.call(arguments);
  //...
}

//vs
const sum = (...args) => {
  //...
};
  • Des questions similaires sur la flèche fonctions sont venus de plus en plus avec ES2015 de plus en plus populaire. Je n'ai pas envie de il y avait une bonne canonique de question/réponse pour ce problème j'ai donc créé ce un. Si vous pensez qu'il y a déjà un bon un, s'il vous plaît laissez-moi savoir et je vais fermer celui-ci que les dupliquer ou de les supprimer. N'hésitez pas à améliorer les exemples ou en ajouter de nouvelles.
  • Ce sujet JavaScript ecma6 changement de la fonction normale de la flèche de la fonction? Bien sûr, une question normale ne peut jamais être aussi bon et générique comme un spécifiquement écrit pour être canonique.
  • Regardez ce Plnkr exemple La variable this est très différent timesCalled incréments seulement par 1 chaque fois que le bouton est appelé. Ce qui répond à ma question personnelle: .click( () => { } ) et .click(function() { }) à la fois de créer le même nombre de fonctions lorsqu'il est utilisé dans une boucle comme vous pouvez le voir à partir du Guid compter dans le Plnkr.
  • Related post - Quand dois-je utiliser la Flèche fonctions dans ECMAScript 6?
InformationsquelleAutor Felix Kling | 2015-12-18