شبكة تعلم مع ناو

ما الفرق بين الـ closure والـ callback في JavaScript؟

  • Closure: دالة تحتفظ بالوصول إلى المتغيرات المحيطة بها حيث عُرّفت، حتى بعد انتهاء الدالة الخارجية.
  • Callback: دالة نمررها كمعامل إلى دالة أخرى، لتستدعيها لاحقًا.

Closure

function makeCounter() {
  let count = 0;
  return () => ++count;  // remembers count
}

const next = makeCounter();
next();  // 1
next();  // 2

Callback

button.addEventListener('click', () => {
  console.log('clicked');
});

ويمكن أن يكونا معًا

المفهومان ليسا متعارضين: الـ callback كثيرًا ما يكون closure أيضًا، يستخدم متغيرات من المكان الذي كُتب فيه.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.