كيف تعمل الإغلاقات (Closures) في JavaScript؟ اشرح بمثال بسيط
مرحباً بالجميع! لقد بدأت للتو في تعلم JavaScript ولا أستطيع فهم موضوع الإغلاقات (closures). قرأت مقالات مختلفة، لكني ما زلت مرتبكاً.
على سبيل المثال، هذا الكود:
>>
function counter() {
let count = 0;
return function() {
count++;
return count;
};
}
const myCounter = counter();
console.log(myCounter()); // 1
console.log(myCounter()); // 2
console.log(myCounter()); // 3
لماذا لا يتم إعادة تعيين المتغير count في كل مرة؟ فالدالة counter() قد انتهت بالفعل من عملها، ومع ذلك لا يزال بإمكاننا تغيير المتغير الداخلي الخاص بها. كنت أتوقع أنه بعد الاستدعاء الأول لـ myCounter() سيتم تدمير المتغير count، لأنه تم تعريفه داخل الدالة.
وسؤال آخر: لماذا نحتاج الإغلاقات أصلاً؟ في أي مواقف حقيقية يتم استخدامها؟ سأكون ممتناً لشرح بسيط مع أمثلة، ويفضل بالروسية. شكراً مقدماً!
<<ما هو الإغلاق وكيف يعمل؟
الإغلاق (closure) هو