انتقل إلى المحتوى
Miraat·dweb developer journey, reflected

الإغلاقات والنطاق في JavaScript

افهم لماذا «تتذكّر» الدالّة المتغيّرات في موضع إنشائها، حتى بعد انتهاء السياق.

Core 25 دقيقة المتطلبات السابقة: الصيغة الأساسية لـJavaScript

ما هو الإغلاق (Closure)

الإغلاق دالّة تحتفظ بالوصول إلى النطاق المعجمي الذي أُنشئت فيه، حتى عند استدعائها في موضع آخر.

function counter() {
  let n = 0;
  return function () {
    return ++n;
  };
}

const inc = counter();
inc(); // 1
inc(); // 2

الدالّة الداخلية تتذكّر n حتى بعد انتهاء counter().

أين تقابلها

  • نمط الوحدات (Module Pattern) — حالة خاصّة.
  • الـCallbacks مع بيانات ملتقطة.
  • خطّافات React (يستخدم useState إغلاقًا).

مصادر مقترحة