الغلاقات في ECMAScript
- الصفحة السابقة مفهوم الوظيفة
- الصفحة التالية منظور الأجسام
أكثر ما يُعتبر من المفاهيم المُضللة في ECMAScript هو دعمه للغلاقات (الغلاقات).
الكlosure، يشير إلى التعبير اللفظي الذي يشمل المتغيرات غير المحسوبة للوظيفة، أي أن الوظيفة يمكن استخدام المتغيرات المحددة خارجها.
مثال كlosure بسيط
استخدام المتغيرات العالمية في ECMAScript هو مثال بسيط على الكlosures. فكر في النص التالي:
var sMessage = "hello world"; function sayHelloWorld() { alert(sMessage); } sayHelloWorld();
في هذا النص، لم يتم حساب قيمة المتغير sMessage عند تحميل النص إلى ذاكرة النظام، بل تم التقاطع فقط للقيمة من أجل الاستخدام في المستقبل، أي أن البرنامج يعرف أنه يجب التحقق من قيمة sMessage عند استدعاء وظيفة sayHelloWorld(). سيتم تعيين sMessage عند استدعاء وظيفة sayHelloWorld() (في السطر الأخير) ويظهر الرسالة "hello world".
مثال كlosure معقد
تحديد وظيفة داخل وظيفة يجعل الكlosures أكثر تعقيدًا. على سبيل المثال:
var iBaseNum = 10; function addNum(iNum1, iNum2) { function doAdd() { return iNum1 + iNum2 + iBaseNum; } return doAdd(); }
في هذا السياق، تتضمن وظيفة addNum() وظيفة doAdd() (الكlosure). وظيفة الداخلية هي كlosure لأنها تحصل على قيم المعلمات iNum1 و iNum2 وغير المتغيرات العالمية iBaseNum. خطوة الأخيرة في addNum() تدعو إلى doAdd()، وتضيف المعلمتين وغير المتغير العالمي، وتعيد مجموعها.
المفهوم المهم الذي يجب فهمه هو أن وظيفة doAdd() لا تأخذ أي معلمات، بل تستخدم القيم من بيئة التنفيذ.
من الواضح أن الكlosures هي جزء قوي ومتعدد الاستخدامات من ECMAScript، يمكن استخدامها لأداء عمليات حسابية معقدة.
إشارة:كما يتم استخدام أي وظيفة متقدمة، يجب توخي الحذر عند استخدام الكlosures لأنها قد تصبح معقدة للغاية.
- الصفحة السابقة مفهوم الوظيفة
- الصفحة التالية منظور الأجسام