La fermeture JavaScript est un concept relativement complexe. De nombreux débutants ont du mal à comprendre les fermetures, mais elles constituent un concept important pour comprendre JavaScript et écrire du code de haute qualité.
Qu'est-ce que la fermeture ?
La fermeture signifie qu'une fonction peut accéder à des variables en dehors de sa portée. Ces variables existent toujours même en dehors de la fonction. En effet, lorsqu'une fonction est définie, elle crée sa propre portée qui contient tous les paramètres et variables de la fonction définis à l'intérieur de la fonction. Lorsque la fonction revient, la portée existe toujours et la fonction continuera à accéder aux variables de la portée. Il s'agit d'une fermeture.
Principe de base :
Lorsqu'une fonction est appelée, sa chaîne de portées inclura les variables de la portée actuelle et de toutes les portées parents. Si la fonction comporte des fonctions imbriquées, la chaîne de portée de la fonction imbriquée comprendra également les variables de la portée parent et de la portée actuelle. Dans un tel environnement, une fonction interne peut accéder aux variables de la fonction externe, mais la fonction externe ne peut pas accéder aux variables de la fonction interne. Ce mécanisme est appelé cadrage lexical ou cadrage statique.
Applications des fermetures :
Les fermetures sont largement utilisées dans de nombreux modèles de conception et techniques en JavaScript. Voici quelques cas pratiques d'utilisation des fermetures :
1. Obtenez des variables privées :
Comme il n'y a pas de concept de variables privées en JavaScript, l'utilisation de fermetures peut simuler des variables privées. Tant qu'une variable est définie dans une fonction, elle existera dans la portée de cette fonction jusqu'à ce que la fonction imbriquée soit renvoyée ou supprimée.
Par exemple, l'exemple de code suivant montre comment utiliser une fermeture pour créer un compteur :
function createCounter() {
let count = 0;
function counter() {
count++; console.log(count);
}
return counter;
}
const myCounter = createCounter();
myCounter(); //1
myCounter(); //2
myCounter(); //3
2. Exécution retardée :
Utilisez des fermetures pour créer une fonction pour implémenter une exécution retardée. Lorsque vous devez attendre un certain temps avant d'exécuter une fonction, vous pouvez utiliser des fermetures pour y parvenir.
Par exemple, le code suivant montre comment utiliser les fermetures pour implémenter une fonction d'exécution retardée :
function delayFunction() {
let timer;
return function() {
clearTimeout(timer); timer = setTimeout(() => { console.log('Delayed function executed!'); }, 1000);
}
}
const myDelayedFunction = delayFunction() ;
myDelayedFunction(); //Attendez 1 seconde et affichez 'Fonction retardée exécutée !'
Bien que la fermeture puisse sembler difficile, c'est un concept très utile pour les développeurs JavaScript. Comprendre les principes de base des fermetures est essentiel pour comprendre les fonctions d'ordre supérieur et les modèles de conception en JavaScript. J'espère que cet article vous aidera à mieux comprendre les fermetures et à les appliquer à vos programmes.
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!