JS - Closures الإغلاق

JavaScript - الإغلاق (Closures)

🔸 الإغلاق (Closure) هو ميزة قوية في JavaScript تُتيح للدالة الداخلية الوصول إلى متغيرات الدالة الخارجية حتى بعد انتهاء تنفيذها. أي أن الدالة "تتذكر" البيئة التي أنشئت فيها.

---

🔹 مثال بسيط على Closure


function outer() {
  let count = 0;

  return function inner() {
    count++;
    console.log("العدد:", count);
  };
}

const counter = outer();

counter(); // العدد: 1
counter(); // العدد: 2
counter(); // العدد: 3

📌 الدالة inner احتفظت بالوصول إلى متغير count الخاص بالدالة outer حتى بعد انتهائها.

---

🔹 Closure مع متغيرات خاصة


function makeCounter() {
  let value = 0;

  return {
    increment: function() {
      value++;
      console.log(value);
    },
    reset: function() {
      value = 0;
      console.log("تم التصفير");
    }
  };
}

let counter1 = makeCounter();
counter1.increment(); // 1
counter1.increment(); // 2
counter1.reset();     // تم التصفير

📌 الإغلاق هنا استخدم لإنشاء متغيرات خاصة داخل كائن.

---

🔹 لماذا تستخدم Closures؟

  • لحماية البيانات (إنشاء متغيرات خاصة).
  • لإنشاء دوال لها حالة داخلية.
  • لإنشاء أدوات قوية مثل المؤقتات، العدادات، والمكتبات المصغرة.
---

⚠️ ملاحظات مهمة

  • كل دالة في JavaScript تُنشئ نطاقًا مغلقًا عند تعريفها داخل دالة أخرى.
  • Closures تحافظ على المتغيرات حتى بعد انتهاء الدالة الأم.
  • كن حذرًا من استخدام الكثير من closures دون داعٍ لأنها قد تؤثر على استهلاك الذاكرة.

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework