شرح صفوف ومحتوى الفقرة
يمكن تحديد امكانية الوصول الي التغيرات بأحدي الطريقتين
- local : ونستطيع خلالها الوصول للمتغير بداخل اقواس التعريف التي تحتويه ولا يمكننا الوصول اليه خارجها
- global : وخلالها نستطيع الوصول الي المتغير في أي مكان بداخل البرنامج
، Closure هو ببساطة دالة (function) تحتفظ بالحالة (state) المحيطة بها والتي تسمى (lexical environement). هذه الحالة تعبر عن المتغيرات الموجودة ضمن نطاق (scope) الدالة الخارجية (outer function) التي تحتوي هذه الدالة الداخلية (inner function).
في الصورة التالية
أولاً الدالة الخارجية تعرف متغيراً يسمى a وتسند له قيمة 5.
- الدالة الخارجية لديها دالة داخلية معرفة بداخلها.
- الدالة الداخلية تعرف متغيراً اسمه b وتسند له قيمة 10.
لا شيء جديد حتى الآن.
الآن الدالة الداخلية تحاول طباعة المتغيرين a و b عن طريق العبارة console.log.
السؤال يأتي الآن، كيف للدالة الداخلية أن تعرف عن المتغير a الذي لم تقم بتعريفه بنفسها؟ هذا هو بالضبط ما يسمى Closure.
إذاً، مرة أخرى. Closure هو دالة تحتفظ بالحالة المحيطة بها (متغيرات) والتي تكون موجودة ضمن نطاق الدالة الخارجية.
