FYGS.dev - Homepagefygs.dev \_°<
CVFormationsProjetsBlogTechMastryContact
CV
Formations
Projets
Blog
TechMastry
Contact
fygs.dev \_°<

Plateforme d'apprentissage premium pour les développeurs modernes. Cours en JavaScript, TypeScript, React, Next.js, Node.js, IA et Cloud.

fygs.dev@gmail.com+33 6 44 80 85 30

Information

CVMon parcours professionnel
ProjetsPortfolio technique
BlogArticles & tutoriels
ContactEntrer en contact

Apprentissage

FormationsCours premium
FormulesFormules & abonnements
TechMastryPréparation aux entretiens
Tableau de bordEspace apprenant
CommunautéRejoindre la communauté

Projets Phares

Evopur

Services de nettoyage écologique pour les ménages à Montréal

NCR

Plateforme de processus administratifs

Quizzen

Plateforme de quiz alimentée par l'IA

A'Numerique

Un service innovant pour combler la fracture numérique

© 2025 Fernand Soualo. Tous droits réservés.

Conçu avec Next.js 15, Tailwind CSS & Shadcn UI❤️
Conditions d'utilisation•Politique de confidentialité•CV
Back to Community
CodeJavaScript
JavaScript Fundamentals : De zéro à héros

Comprendre les closures en JavaScript

LLucas Moreau
L3
•11/2/2025•edited

Bonjour !

Je galère un peu avec le concept des closures en JavaScript. J'ai lu plusieurs articles mais j'ai du mal à saisir l'utilité pratique.

Ce que je comprends

function outer() { let count = 0; return function inner() { count++; return count; } } const counter = outer(); console.log(counter()); // 1 console.log(counter()); // 2

Mes questions

  1. Dans quels cas concrets utilise-t-on les closures ?
  2. Y a-t-il des pièges à éviter ?
  3. Lien avec les modules et l'encapsulation ?

Merci pour vos explications ! 🤓

1 replies6 votes101 views

Replies (1)

Sort by:
OldestNewestBest
A
Admin FYGS
L1
3 days ago (edited)

Les closures sont super utiles ! Voici des cas concrets :

🏭 Factory pattern

function createValidator(rules) { return function(data) { return rules.every(rule => rule(data)); }; } const emailValidator = createValidator([ data => data.includes('@'), data => data.length > 5 ]);

🔒 Variables privées (avant les classes)

function createBankAccount(initialBalance) { let balance = initialBalance; return { deposit: (amount) => balance += amount, withdraw: (amount) => balance -= amount, getBalance: () => balance }; }

⚡ Throttle/Debounce

function debounce(func, delay) { let timeoutId; return function(...args) { clearTimeout(timeoutId); timeoutId = setTimeout(() => func.apply(this, args), delay); }; }

Les closures permettent de crĂ©er des "environnements persistants" ! đź§