Qu'est-ce qu'une fonction de fermeture ?Quand on commence à apprendre les fermetures, c'est probablement difficile à comprendre pour tout le monde. À en juger par son explication officielle, c'est relativement conceptuel.
Mais on part quand même du sens de la fermeture.
La fermeture signifie qu'une fonction a des variables libres et indépendantes. En d’autres termes, une fonction définie dans une fermeture peut « se souvenir » de l’environnement dans lequel elle a été créée.
Après l’explication officielle, regardons d’abord un exemple simple de comptage.
var c = 0; function count(){ c++; } count();// 1 count();// 2
Cet exemple est implémenté en utilisant des variables globales, mais il y a un problème ici. La variable c est également facilement appelée par d'autres méthodes. À ce stade, la valeur stockée de c peut être modifiée, ce qui rend le décompte invalide. Comment bien gérer ce problème ! Nous penserons à utiliser des variables locales pour le résoudre. Par exemple :
.
function count(){ var c = 0; function add(){ c++; } add(); } count();// c = 1 count();// c = 1
Parce qu'après la création de cette manière, les variables internes n'existent que lorsque la fonction de comptage est créée et exécutée. Après l'exécution, la fonction entière sera supprimée. La capacité d'avoir de la mémoire ne peut pas être obtenue. nous utiliserons des fermetures pour le résoudre. Je tiens à le mentionner à nouveau : fermeture = environnement de fonction
function count(){ var c = 0; function add(){ c++; } return add; } var ct = count(); ct(); // c = 1 ct(); // c = 2
À l'heure actuelle, nous pouvons utiliser cette fermeture pour compléter la capacité de comptage. ct est une fonction de fermeture, et l'environnement interne est la variable locale c. Ce que nous obtenons ici, ce sont des données internes, qui sont exploitées en externe. la fermeture Quelles autres fonctions cela a-t-il ?
Utilisez des fermetures pour simuler des méthodes privées
C'est un peu comme les méthodes privées ou variables privées de JAVA, qui ne peuvent être exploitées que par vous-même ! Si vous opérez en externe, vous devez définir une méthode publique pour fonctionner
.
var person = (function(){ var _name = "编程的人"; var age = 20; return { add:function(){ age++; }, jian:function(){ age--; }, getAge:function() { return age; }, getName:function(){ return _name; }, setName: function (name) { _name = name; } } })(); person.add(); var age = person.getAge(); console.log(age) person.setName("编程的人公众号:bianchengderen") console.log(person.getName())
Cela devrait être facile à comprendre ici ! Cela ressemble un peu à de la programmation orientée objet. Bien entendu, Javascript présente désormais également les caractéristiques de la programmation orientée objet. Nous l'expliquerons plus tard
.
Jusqu'à présent, nous avons utilisé des exemples allant du comptage à la privatisation interne pour illustrer les fermetures. J'espère que tout le monde pourra facilement comprendre le principe. Bien entendu, les fermetures ont d'autres fonctions plus pratiques à utiliser.
Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à tout le monde dans l'apprentissage de la programmation javascript.