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 دون داعٍ لأنها قد تؤثر على استهلاك الذاكرة.
تعليقات
إرسال تعليق