دوال JavaScript، والخيوط (Threads)، والتنفيذ
فهم أساسيات JavaScript يساعدك على كتابة كود أفضل. إليك شرح للدوال، والعمليات (Processes)، والخيوط (Threads)، وأنماط التنفيذ.
٥ أنواع من دوال JavaScript
- الدالة المسماة (Named Function): دالة لها اسم محدد، وتساعد في عملية تصحيح الأخطاء (debugging) وإعادة الاستخدام.
- الدالة المجهولة (Anonymous Function): دالة بدون اسم، وغالباً ما تُستخدم كدوال استدعاء (callbacks).
- تعبير الدالة (Function Expression): تقوم بتعيين دالة لمتغير، ثم تستدعيها باستخدام اسم ذلك المتغير.
- الدالة السهمية (Arrow Function): صيغة مختصرة تستخدم الرمز
=>وتتعامل معthisبشكل مختلف. - IIFE: دالة تعمل بمجرد تعريفها، وتنشئ نطاقاً خاصاً (private scope).
العملية (Process) مقابل الخيط (Thread)
العملية (Process) هي برنامج يعمل على جهاز الكمبيوتر الخاص بك.
- لها ذاكرتها الخاصة.
- لها معرف فريد يسمى PID.
- إذا تعطلت عملية واحدة، تظل العمليات الأخرى تعمل.
- مثال: Chrome و Spotify هما عمليتان منفصلتان.
الخيط (Thread) هو وحدة صغيرة داخل العملية.
- تتشارك الخيوط نفس الذاكرة داخل العملية الواحدة.
- تسمح للبرنامج بالقيام بأشياء كثيرة في وقت واحد.
- مثال: يستخدم Chrome خيوطاً متعددة لعرض صفحة ويب أثناء تشغيل الصوت.
المتزامن (Synchronous) مقابل غير المتزامن (Asynchronous)
JavaScript هي لغة أحادية الخيط (single-threaded)، مما يعني أنها تعالج مهمة واحدة في كل مرة.
التنفيذ المتزامن (Synchronous Execution):
- المهام تعمل واحدة تلو الأخرى.
- ينتظر كل سطر انتهاء السطر السابق.
- يمكن لمهمة بطيئة أن توقف كل شيء آخر عن العمل.
التنفيذ غير المتزامن (Asynchronous Execution):
- يمكن للمهام أن تبدأ الآن وتنتهي لاحقاً.
- لا تعيق (block) بقية الكود الخاص بك.
- يعمل هذا من خلال حلقة الأحداث (Event Loop).
- يستخدم المتصفح واجهات برمجة تطبيقات الويب (Web APIs) للتعامل مع المهام مثل المؤقتات (timers) أو جلب البيانات (data fetching) في الخلفية.
- بمجرد انتهاء مهمة الخلفية، تقوم حلقة الأحداث (Event Loop) بإعادتها إلى المكدس (stack) لتنفيذها.