نطاق JavaScript: Block، Global، و Function
يحدد النطاق (Scope) المكان الذي يمكنك فيه استخدام المتغير في الكود الخاص بك.
النطاق العالمي (Global Scope) تعيش المتغيرات خارج الدوال (functions) أو الكتل (blocks). يمكنك الوصول إليها من أي مكان في السكربت الخاص بك. تحذير: تؤدي المتغيرات العالمية إلى حدوث أخطاء (bugs) لأن أي جزء من الكود الخاص بك يمكنه تغييرها.
النطاق الوظيفي (Function Scope) تعيش المتغيرات داخل الدالة. يمكنك الوصول إليها فقط ضمن تلك الدالة المحددة.
النطاق الكتلي (Block Scope) ينطبق هذا على JavaScript الحديثة باستخدام
letأوconst. تعيش المتغيرات داخل الأقواس المتعرجة{}. تتضمن الكتلة (block):
- جمل
if - حلقات
for - حلقات
while - كتل مستقلة
{}
ملخص النطاق (Scope):
- Global (عالمي): يمكن الوصول إليه في كل مكان.
- Function (وظيفي): يمكن الوصول إليه فقط داخل الدالة.
- Block (كتلي): يمكن الوصول إليه فقط داخل الأقواس المتعرجة.
var: يستخدم النطاق الوظيفي، ويتجاهل النطاق الكتلي.letوconst: تستخدم النطاق الكتلي. استخدمهما لكتابة كود أفضل.
فهم العمليات (Processes) والخيوط (Threads)
العملية (Process) هي برنامج قيد التشغيل وله ذاكرته الخاصة. فكر في WhatsApp كعملية.
الخيط (Thread) هو جزء صغير من العملية. وتتشارك الخيوط في نفس الذاكرة.
- الخيوط خفيفة الوزن.
- سريعة الإنشاء.
- تتيح لك القيام بأشياء كثيرة في وقت واحد.
مثال على WhatsApp: عملية واحدة (WhatsApp) تشغل خيوطاً متعددة:
- استقبال الرسائل
- إرسال الصور
- تشغيل الفيديوهات
- إظهار الإشعارات
Source: https://freeacademy.ai/lessons/global-vs-function-vs-block-scope Source: https://josephcardillo.medium.com/the-difference-between-function-and-block-scope-in-javascript-4296b2322abe