Maison >interface Web >js tutoriel >Cas d'application de fermeture courants en programmation
Les scénarios d'application courants des fermetures en programmation nécessitent des exemples de code spécifiques
En programmation, la fermeture (Closure) est un concept puissant et courant. Cela signifie qu'une fonction peut accéder et opérer sur des variables dans la portée lexicale au moment de sa définition. Les fermetures peuvent jouer un rôle dans de nombreux scénarios. Ce qui suit présente plusieurs scénarios d'application courants et fournit des exemples de code spécifiques.
function createCounter() { let count = 0; return function() { count++; console.log(count); } } const counter = createCounter(); counter(); // 输出 1 counter(); // 输出 2
Dans cet exemple, la fonction createCounter
renvoie une fonction interne qui peut accéder et modifier la variable count
. La variable count
n'est pas accessible directement de l'extérieur. Vous ne pouvez incrémenter et afficher la valeur de count
qu'en appelant la fonction counter
. createCounter
函数返回一个内部函数,该内部函数可以访问并修改 count
变量。外部无法直接访问 count
变量,只能通过调用 counter
函数来递增并输出 count
的值。
function debounce(callback, delay) { let timerId = null; return function() { if (timerId) { clearTimeout(timerId); } timerId = setTimeout(callback, delay); } } function inputChange() { console.log('Input changed.'); } const inputElement = document.getElementById('input'); inputElement.addEventListener('input', debounce(inputChange, 500));
在这个例子中,debounce
函数返回一个闭包,内部定义了一个 timerId
变量。当 input
事件触发时,闭包内部的函数会先清除之前的定时器,然后再设置一个新的定时器,确保在 delay
毫秒后执行回调函数。
function fetchData(url) { return new Promise(function(resolve, reject) { fetch(url).then(function(response) { resolve(response); }).catch(function(error) { reject(error); }); }); } function handleResponse(response) { console.log(response); } fetchData('https://api.example.com/data').then(handleResponse);
在这个例子中,fetchData
函数返回一个 Promise,并在其内部定义了一个闭包。在闭包内部的回调函数中,可以访问外部函数的上下文环境,包括 resolve
和 reject
La lutte contre le rebond et la limitation sont des méthodes permettant de limiter les fonctions de rappel lors du traitement des événements. Par exemple, lorsque l'utilisateur déclenche continuellement un événement répétitif, l'anti-shake peut permettre à la fonction de rappel d'être exécutée une seule fois après le dernier déclenchement, et la limitation peut permettre à la fonction de rappel d'être exécutée une fois dans un certain intervalle de temps. Voici un exemple de fonction anti-rebond implémentée à l'aide de fermetures :
🎜rrreee🎜Dans cet exemple, la fonctiondebounce
renvoie une fermeture et définit une variable timerId
en interne. Lorsque l'événement input
est déclenché, la fonction à l'intérieur de la fermeture effacera d'abord le minuteur précédent, puis définira un nouveau minuteur, garantissant que la fonction de rappel est exécutée après delay
millisecondes. . 🎜fetchData
renvoie une promesse et définit une fermeture à l'intérieur. Dans la fonction de rappel à l'intérieur de la fermeture, vous pouvez accéder au contexte de la fonction externe, y compris les fonctions resolve
et reject
. 🎜🎜Closure est un concept de programmation puissant et courant, souvent utilisé pour implémenter des variables privées, des fonctions de limitation anti-tremblement et enregistrer l'état du contexte. Les scénarios ci-dessus sont des scénarios d'application courants de fermetures en programmation, et des exemples de code spécifiques sont fournis. En comprenant profondément les principes et les scénarios d'application de la fermeture, nous pouvons mieux l'utiliser pour résoudre des problèmes pratiques. 🎜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!