JavaScript nous offre deux manières principales de définir des fonctions : les fonctions fléchées et les fonctions régulières. Bien qu'ils puissent sembler similaires à première vue, il existe certaines différences clés qui peuvent avoir un impact sur la façon dont votre code s'exécute et sur la façon dont vous le structurez. Décomposons ces différences afin que vous puissiez mieux comprendre quand utiliser chaque type.
Les fonctions fléchées sont plus courtes et utilisent un => symbole. Voici à quoi ils ressemblent par rapport aux fonctions classiques :
// Regular function function add(a, b) { return a + b; } // Arrow function const add = (a, b) => a + b;
Avec une fonction fléchée, vous pouvez ignorer le mot-clé return si vous renvoyez une seule expression. Cela rend les fonctions fléchées populaires pour les fonctions plus courtes et plus simples.
Dans les fonctions régulières, cela fait référence à l'objet qui appelle la fonction. Cependant, les fonctions fléchées n’ont pas leur propre contexte. Au lieu de cela, ils héritent de cela du code environnant où ils sont définis.
Voici un exemple pour montrer comment cette différence affecte le comportement :
const object = { name: 'JavaScript', regularFunction: function() { console.log(this.name); // 'JavaScript' }, arrowFunction: () => { console.log(this.name); // undefined } }; obj.regularFunction(); // 'JavaScript' obj.arrowFunction(); // undefined
Cela peut être utile lorsque vous transmettez une fonction aux écouteurs d'événements, jetez un œil :
document.querySelector('button').addEventListener('click', function() { console.log(this); // refers to the button element! });
Les fonctions régulières ont accès à l'objet arguments, qui contient tous les arguments transmis à la fonction. Les fonctions fléchées n'ont pas cela ; ils utilisent des paramètres de repos ...args à la place.
// regular function with arguments function sum() { return Array.from(arguments).reduce((a, b) => a + b); } // arrow function with rest parameters const sum = (...args) => args.reduce((a, b) => a + b);
Les fonctions fléchées peuvent simplifier votre code, en particulier lorsqu'il s'agit d'éléments nécessitant des callbaks - par exemple des promesses ou des méthodes de tableau comme .map() et .filter().
// using arrow functions in array methods const numbers = [1, 2, 3]; const squares = numbers.map(number => number * n); // [1, 4, 9]
En général, les fonctions fléchées fonctionnent bien pour :
Les fonctions régulières sont utiles lorsque :
Remarquons ici quelque chose d'intéressant. Comme vous pouvez le constater, les différences sont assez subtiles. Dans la plupart des cas, peu importe celui que vous choisissez, à moins que votre base de code n'en fasse un usage intensif ou des arguments (peu probable).
L'essentiel est que choisissez simplement celui que vous préférez, soyez simplement cohérent dans l'ensemble de votre projet.
Êtes-vous d'accord avec cette approche ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!