Bonjour à tous! Aujourd'hui, je vais discuter d'un concept très célèbre en programmation (fonctions de première classe). Il y a déjà tellement de ressources sur ce sujet, mais il y a encore quelque chose de nouveau à tirer de cet article, et j'ai pris le temps de simplifier les choses pour une meilleure compréhension.
Selon Wikipedia, un langage de programmation est dit avoir des fonctions de première classe s'il traite les fonctions comme des citoyens de première classe .
Cela signifie que le langage prend en charge le passage de fonctions en tant qu'arguments à d'autres fonctions, en les renvoyant comme valeurs de différentes fonctions, en les affectant à des variables ou en les stockant dans des structures de données.
En Javascript, les choses fonctionnent ainsi car une fonction n'est qu'un autre type d'objet. Si vous êtes nouveau dans ce concept, vous auriez l'impression que c'est assez gênant, surtout si vous venez d'un milieu de programmation différent, mais pour l'instant, concentrez-vous sur cela. Puisque les objets sont des valeurs, les fonctions le sont aussi, et Javascript les traite comme une seule. Cela ouvre une nouvelle façon d'écrire du code plus flexible puisque nous pouvons stocker des fonctions dans une variable ou ajouter des propriétés.
J'ai décomposé les principaux points dans une liste à puces pour faciliter les choses. Pour mieux comprendre les fonctions de première classe, voici quelques points pour le clarifier.
Une chose rendue possible avec une fonction de première classe est de passer une fonction en argument ; nous pouvons voir ce style de code dans beaucoup de code Javascript. Par exemple, la méthode addEventListener, qui reçoit une fonction de rappel Javascript comme argument, par exemple
button.addEventListener('click', function(){ console.log('hellloooo') })
Dans l'extrait de code précédent, nous observons que addEventListener reçoit deux arguments, où la deuxième fonction est la fonction de rappel, et serait appelée après que le bouton ait été cliqué.
Nous pouvons renvoyer des fonctions à partir d'une autre fonction en Javascript ; de nombreux objets en Javascript ont des méthodes, par exemple, les fonctions Array en javascript. De plus, nous avons la méthode de la fonction, par exemple, les méthodes Javascript call()
, bind()
, apply()
peuvent toutes être appelées sur les fonctions Javascript.
function count(){ Let counter = 0; return function(){ counter++ } }
La fonction count a renvoyé une autre fonction où nous avons mis à jour le compteur.
En Javascript, nous pouvons stocker une fonction dans une variable ou même une propriété, comme vous le feriez pour faire la moyenne des valeurs Javascript.
Const multiply = (a,b) => a * b
La fonction de flèche Javascript ci-dessus est stockée dans la variable de multiplication, qui peut être appelée
multiplier(3,5) de cette façon.
L'une des principales significations des fonctions de première classe est qu'elles nous permettent d'écrire des fonctions d'ordre supérieur.
Il s'agit soit d'une fonction qui reçoit une autre fonction en argument, soit d'une fonction qui renvoie une nouvelle fonction. Ceci n'est possible qu'en raison de la fonction de première classe.
button.addEventListener('click', function(){ console.log('hellloooo') })
Ici, addEventListener()
est un exemple de fonction d'ordre supérieur car elle reçoit une autre fonction en tant qu'argument. Il fait souvent référence à une fonction de rappel Javascript car elle a été appelée après l'exécution du HOF. La principale différence entre les fonctions d'ordre supérieur et de première classe est qu'une fonction de première classe est une fonctionnalité qu'un langage de programmation possède ou non, cela signifie simplement que toutes les fonctions sont des valeurs.
En conclusion, il est essentiel de savoir qu'il n'y a pas de fonction de première classe dans la pratique ; c'est juste un concept. Il existe cependant des fonctions d'ordre supérieur en pratique qui sont possibles car le langage prend en charge les fonctions de première classe.