شرح صفوف ومحتوى الفقرة
تأمل معضلة العداد الشهيرة: إذا وضعت let count = 0 في النطاق العام، استطاع أي سطر بالصفحة تخريبه وإسناد قيمة خاطئة له. وإن وضعته داخل دالة عادية، تصفّر وعاد إلى 0 في كل استدعاء! وهنا تحل المغلفات (Closures) المشكلتين معاً بكفاءة باهرة:
| طريقة تخزين الحالة | هل تحتفظ بالقيمة بين الاستدعاءات؟ | هل هي محمية من العبث الخارجي؟ |
|---|---|---|
| متغير عام بالملف | نعم، يبقى طوال فتح الصفحة | لا، أي كود خارجي يمكنه تغييره بالخطأ |
| متغير محلي عادي | لا، يُنشأ من الصفر عند كل استدعاء | نعم، معزول داخل الدالة |
| متغير داخل Closure | نعم، محفوظ في البيئة المعجمية المرافقة | نعم، لا يُقرأ ولا يُعدل إلا عبر الدالة المرجعة |