الدوال العادية في لغة JavaScript
يا هلا والله! اليوم بنتكلم عن الدوال العادية في جافاسكريبت، اللي هي أساس كل شيء تقريباً. سهلة ومباشرة، وما فيها تعقيدات.
وشي الدوال العادية؟
ببساطة، الدالة هي مجموعة من الأوامر اللي نكتبها مرة وحدة ونقدر نناديها وننفذها أي وقت نحتاجه. تخيلها كـ "وصفة" أو "مهمة" محددة.
كيف نكتب دالة عادية؟
فيه طريقتين أساسيتين: إعلان الدالة (Function Declaration) وتعبير الدالة (Function Expression).
1. إعلان الدالة (Function Declaration)
هذي أسهل وأكثر شي تشوفه. تبدأ بكلمة function، بعدين اسم الدالة، بعدين أقواس () ممكن نحط فيها مدخلات (Parameters)، بعدين أقواس المجموعة {} اللي نحط فيها الكود حق الدالة.
ملاحظة: إعلان الدالة تقدر تناديها قبل ما تكتبها في الكود (هذا يسمونه Hoisting).
2. تعبير الدالة (Function Expression)
هنا نحط الدالة داخل متغير. الدالة نفسها مالها اسم (تصير دالة مجهولة - Anonymous Function)، ونستخدم اسم المتغير عشان نناديها.
ملاحظة: تعبير الدالة ما تقدر تناديها قبل ما تعرفها (يعني ما فيها Hoisting زي إعلان الدالة).
كيف ننادي الدالة؟
بعد ما نكتب الدالة، عشان نشغلها ونخليها تسوي شغلها، نناديها باسمها ونحط بعدها أقواس ().
المدخلات والمخرجات (Parameters and Return Values)
المدخلات (Parameters)
الدوال غالباً تحتاج بيانات عشان تشتغل عليها. هذي البيانات نسميها parameters لما نكتب الدالة، و arguments لما نناديها. نحطها داخل الأقواس ().
المخرجات (Return Values)
أحياناً ما نبغى الدالة بس تطبع شي، نبغاها ترجع لنا قيمة نقدر نستخدمها في مكان ثاني في الكود. هنا نستخدم كلمة return.
ملاحظة: أي كود يجي بعد
returnداخل الدالة ما راح يتنفذ. الدالة توقف شغلها وترجع القيمة.
الـ this في الدوال العادية
هذي نقطة مهمة وحساسة شوي. في الدوال العادية، قيمة this تتحدد بناءً على طريقة استدعاء الدالة. في الغالب، إذا كانت الدالة مستقلة، قيمة this بتكون الكائن الشامل (Global Object) اللي هو window في المتصفح أو undefined في وضعية strict mode.
لما تكون الدالة جزء من كائن (Object Method)، قيمة this بتكون هي الكائن اللي استدعى الدالة.
خلاصة
الدوال العادية هي لب جافاسكريبت. استخدمها عشان تنظم كودك وتخليه قابل لإعادة الاستخدام. تذكر الفرق بين إعلان الدالة وتعبير الدالة، وكيف تتعامل مع المدخلات والمخرجات، وانتبه لقيمة this.
كذا نكون خلصنا درس اليوم. بالتوفيق يا وحوش البرمجة!