دوال JavaScript، والعمليات، والتنفيذ
يتطلب إتقان JavaScript فهم كيفية تشغيل الكود.
إليك المفاهيم الأساسية التي تحتاج إلى معرفتها.
١. ٥ أنواع من دوال JavaScript
- الدالة المسماة (Named Function): تستخدم اسماً محدداً، مما يساعدك على تصحيح الأخطاء بسرعة.
- الدالة المجهولة (Anonymous Function): ليس لها اسم، وتُستخدم في عمليات الـ callbacks أو تعيين المتغيرات.
- تعبير الدالة (Function Expression): حيث تقوم بتعيين دالة لمتغير ما.
- الدالة السهمية (Arrow Function): صيغة مختصرة تستخدم الرمز
=>وتتعامل مع الكلمة المفتاحيةthisبشكل مختلف. - الدالة المستدعاة ذاتياً (IIFE): تعمل بمجرد تعريفها، مما يحافظ على عزل الكود الخاص بك.
٢. العملية (Process) مقابل الخيط (Thread)
العملية (Process) هي برنامج قيد التشغيل. لكل عملية ذاكرتها الخاصة. إذا تعطل Chrome، سيستمر Spotify في العمل لأنهما عمليتان منفصلتان.
الخيط (Thread) هو وحدة صغيرة داخل العملية. تتشارك الخيوط نفس الذاكرة، مما يجعلها أسرع وأخف من العمليات.
٣. المتزامن (Synchronous) مقابل غير المتزامن (Asynchronous)
JavaScript تعمل بخيط واحد (single-threaded)، وعادةً ما تقوم بتشغيل مهمة واحدة في كل مرة.
التنفيذ المتزامن (Synchronous Execution): تُنفذ المهام بترتيب صارم، حيث ينتظر السطر التالي انتهاء السطر الحالي. قد يؤدي هذا إلى إبطاء تطبيقك إذا استغرقت إحدى المهام وقتاً طويلاً جداً.
التنفيذ غير المتزامن (Asynchronous Execution): يمكن للمهام أن تبدأ الآن وتنتهي لاحقاً، مما يمنع الكود الخاص بك من التوقف (blocking).
كيف يعمل الأمر:
- يقوم مكدس الاستدعاء (Call Stack) بمعالجة مهامك الحالية.
- تقوم واجهات برمجة تطبيقات الويب (Web APIs) بمعالجة المهام الطويلة مثل المؤقتات أو طلبات البيانات في الخلفية.
- يحفظ طابور الاستدعاء (Callback Queue) المهام المنتهية.
- تقوم حلقة الأحداث (Event Loop) بنقل المهام من الطابور إلى المكدس عندما يكون فارغاً.
مثال على التدفق غير المتزامن:
- طباعة "Hi"
- بدء مؤقت لمدة ثانيتين
- طباعة "End"
- (بعد مرور ثانيتين) طباعة "Vicky"
الكود لا ينتظر المؤقت، بل ينتقل إلى "End" فوراً.
مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi