Alors, comment vas-tu ? Je l'espère!
J'essayais de résoudre certains problèmes de programmation dans Leetcode et dans l'un des défis, je suis tombé sur un concept très important en programmation que beaucoup de gens ont du mal à comprendre.
J'ai donc décidé d'écrire ici en essayant d'expliquer de la meilleure façon possible comment les fermetures fonctionnent en JavaScript. Viens avec moi !
Je travaillais sur un défi appelé "Compteur" dans lequel je devais créer une fonction de compteur qui renvoyait initialement l'entier n et, à chaque appel ultérieur, renvoyait 1 unité de plus que la valeur précédente. Par exemple :
Le problème donne quelques indices, notamment que nous pouvons utiliser des fonctions qui renvoient d'autres fonctions.
C'est le concept des fermetures. J'ai donc suivi le conseil et j'ai emprunté cette voie. Voici la solution que j'ai trouvée :
var createCounter = function (n) { let contador = n; return function () { resultado = contador; contador++ return resultado; }; };
Ce code définit une fonction appelée createCounter qui renvoie une autre fonction (closure), capable de stocker et de manipuler une variable locale (dans ce cas, le compteur).
Cette dernière étape est celle où nous réalisons le véritable pouvoir d’une fermeture. Une fermeture se produit lorsqu'une fonction renvoie une autre fonction qui a accès aux variables externes et maintient son état entre les appels. C'est comme avoir un petit "caché" dans ma fonction où je peux stocker des informations et y accéder plus tard.
La série Rick et Morty joue avec les voyages interdimensionnels, les autres civilisations et critique et propose des réflexions sur de nombreuses questions existentielles pour l'être humain.
Si vous ne connaissez pas la série, voici un bref résumé : Rick Sanchez, le personnage principal de l'œuvre, est un scientifique qui développe toutes sortes de technologies folles et emmène généralement son petit-fils Morty dans ses aventures. L'une des inventions les plus célèbres du vieil homme est le portail interdimensionnel, qui lui permet de voyager entre les réalités et les dimensions. Pour en savoir plus, il faudra regarder la série (rires).
Qu'est-ce que tu veux dire, Neilton ?
Eh bien, imaginez que Rick développe un sac à dos interdimensionnel pour Morty, qui donne accès à une dimension spécifique. Dans cette dimension, Rick place quelques outils importants. Morty peut transporter le sac à dos n'importe où – que ce soit à l'école, pour une promenade ou même pour un voyage intergalactique – et, même loin de Rick, il aura toujours accès à tout ce qui y est stocké.
La meilleure partie ? Morty peut ouvrir le sac à dos et sortir les outils chaque fois qu'il souhaite utiliser ou même modifier ce qu'il y a à l'intérieur. Et peu importe où il se trouve, ce qui était stocké reste accessible.
Et quel est le lien entre cet exemple et les fermetures ?
Les fermetures sont de puissantes ressources en programmation. Parmi les principaux avantages de l'utilisation des fermetures, je souligne l'encapsulation et la mémorisation. Encapsulation car la valeur n'est accessible que via la fermeture (fonction interne) et mémorisation en raison de la possibilité de conserver la valeur des variables entre les appels.
Image générée par l'IA : https://designer.microsoft.com/image-creator?scenario=texttoimage
Invite : générez une image où Rick de Rick et Morty tend à Morty un appareil de poche dimensionnel lumineux. Morty sort des objets de sa poche, comme des outils et des gadgets, tandis que Rick en explique avec désinvolture les mécanismes dans un laboratoire. La poche représente une fermeture contenant des objets flottants auxquels Morty peut continuer à accéder, même après le départ de Rick.
Alors, avez-vous compris ce que sont les fermetures et quelle est leur importance dans la programmation ? Parfois, j'aimerais avoir un sac à dos comme celui de Morty pour ranger des choses utiles ou simplement pour me téléporter dans une autre dimension (rires).
Si vous avez aimé le contenu, commentez et partagez, foncez ! S'il vous plaît, donnez-moi de la force si vous pensez que cet article aidera les autres.
À la prochaine fois !
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!