- 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 أيضًا، يستخدم متغيرات من المكان الذي كُتب فيه.