Découvrez les fonctions fléchées en Javascript
Dans javascript on connaissait jusqu’en ES6 deux façon de déclarer des fonctions, les fonctions nommées et les fonctions anonymes.
Déclaration de fonctions nommées :
function saluer(nom){ console.log('Bonjour ' + nom) }
Les fonctions anonymes
function (nom){ console.log('Bonjour ' + nom) }
Depuis ES6 vous pouvez déclarer les fonction flèches !
Attention les fonctions flèches ne sont pas équivalentes aux fonction nommées. Une fonction flèche n’a pas de this . Les fonctions flèches sont toujours anonymes. Elles ne peuvent être utilisé comme constructeur.
const add = (a) => return a + 5 add(5) //10
Les fonctions flèches ne sont pas à utiliser en tant que méthode
D’abord c’est quoi la différence entre une fonction et une méthode?
une méthode est une fonction définie en tant que propriété d’un objet, sinon pas de différence au niveau de la syntaxe. Dans le cas des fonctions flèches, il y a une différence de comportement vis à vis de this.
L’exemple ci-dessous :
var obj = { i: 10, b: () => console.log(this.i, this), c: function() { console.log(this.i, this) } } obj.b(); // undefined Window {...} obj.c(); // 10 Object{i:10}
Alors qu’une fonction anonyme connait son propre this, une fonction flèche n’a pas son propre this, comme l’atteste l’affichage, le this de la fonction se réfère à l’objet Window.
Les fonctions flèches n’ont pas de constructeur
var Foo = function{}() var f = new Foo() var Bar = () => {} var b = new Bar() //Uncaught TypeError : Foo is not a constructor