Maison >interface Web >js tutoriel >Rick et Morty et Clorsures : quel est le point commun entre ces choses ?

Rick et Morty et Clorsures : quel est le point commun entre ces choses ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-24 06:36:02777parcourir

Rick and Morty e Clorsures: o que essas coisas tem em comum?

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 !

Le problème

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 :

  • counter(10) renvoie 10
  • counter() (appelé à nouveau) renvoie 11
  • counter() (appelé à nouveau) renvoie 12

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).

  • Le compteur commence par la valeur de n transmise lorsque vous appelez createCounter().
  • Chaque fois que vous exécutez la fonction, la fonction interne (retour) accède à la valeur actuelle du compteur, la renvoie, puis l'incrémente.
  • Cela permet au compteur de "se souvenir" de l'endroit où il s'est arrêté, grâce à la fermeture.

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.

Et quelle est la place de Rick et Morty dans cette histoire ?

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 ?

  • Rick est la fonction externe, qui crée la portée (dimension) et les variables (outils) accessibles ultérieurement.
  • Morty avec le sac à dos représente la fonction interne, qui peut accéder et modifier les variables de la fonction externe.
  • La dimension représente la portée lexicale de la fonction externe, c'est-à-dire les variables qui ont été créées au sein de la fonction externe et auxquelles la fonction interne accède, même après l'exécution de la fonction externe.
  • Le fait que Morty puisse accéder aux éléments de la dimension depuis n'importe où reflète la persistance de la portée : même une fois la fonction externe terminée, la fonction interne conserve l'accès aux variables dans la portée d'origine.

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.


Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn