في JavaScript عندك طريقتين تقدر تعرف بيهم الفانكشن:
- Function Declaration
- Function Expression
طيب، إيه الفرق بينهم؟ وامتى تستخدم كل واحدة؟
📌 أولًا: Function Declaration
دي الطريقة التقليدية لتعريف الفانكشن باستخدام الكلمة المفتاحية function
وكودها بيبقى بالشكل ده:
sayHello(); // Hello, world!
المميزات:
- ممكن تنادي الفانكشن قبل ما يتم تعريفها في الكود (بسبب الـ Hoisting).
🔴 مثال على الـ Hoisting:
function greet() {
console.log(“Good Morning”);
}
الفانكشن بتتخزن في الـ Memory قبل تنفيذ الكود فبتكون متاحة حتى لو ناديت عليها قبل التعريف
📌 ثانيًا: Function Expression
هنا الفانكشن بتتخزن داخل متغير فـ لازم الأول تتعرف وبعد كده يتم استدعاؤها.. كودها بيكون بالشكل ده:
sayHi(); // Hi there
المميزات:
- مش بتتعرض للـ Hoisting زي الـ Function Declaration.
- مفيدة جدًا لو هتستخدم الفانكشن كـ Callback Function.
- ممكن تخزنها في متغيرات أو تمررها لفانكشن تانية.
لو حاولت تنادي عليها قبل التعريف، هتظهر لك Error
const greet = function() {
console.log(“Good Evening!”);
};
هنا الفانكشن مش متاحة قبل تعريفها لأنها بتتعامل كقيمة عادية مش كتعريف مستقل
إمتى تستخدم Function Declaration؟
- لو الفانكشن هتكون جزء أساسي من الكود وعايزها تكون متاحة في أي مكان في الملف.
- لما تحتاج للفانكشن في أكثر من مكان من غير ما تفكر في ترتيب الأكواد.
إمتى تستخدم Function Expression؟
- لما تكون الفانكشن مؤقتة أو داخل متغير زي الـ Callback Functions.
- لما تحتاج فانكشن مجهولة (Anonymous Function) مش هتعيد استخدامها كتير.
- لو عايز تربط الفانكشن بحدث معين زي
setTimeout
أوaddEventListener
.
🎯 تـــاســك عــمــلــي
المطلوب:
- اكتب Function Declaration اسمها
multiply
بتضرب رقمين وترجّع النتيجة. - اكتب Function Expression اسمها
divide
بتقسم رقمين وترجّع النتيجة. - حاول تنادي عليهم قبل وبعد التعريف وشوف الفرق
📢 شارك الحل بتاعك في الكومنتات وخلينا نشوف مين هيحلها صح
قسم التعليقات