نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر

نوفيل
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
دخولابدأ مجاناً
الرئيسيةالكورساتالتحديات⚔️ المبارزاتالمقالاتالأدواتتغريداتالمجتمع
JS

منهج JavaScript

دليل مرجعي شامل

كل اللغات
مدرسة البرمجة/منهج JavaScript/تعريف واستدعاء الدوال

تعريف واستدعاء الدوال

الدوال في جافاسكريبتfunction javascriptfunction declaration expressionreturn javascriptتعريف الدوال بالعربي

جدول مرجعي سريع

1
النوعالصيغةHoisting
Function Declarationfunction اسم() {}كامل
Function Expressionconst اسم = function() {}لا
Arrow Functionconst اسم = () => {}لا

الشرح

الدالة (Function) هي كتلة كود منظمة ومسمّاة تؤدي مهمة محددة، ويمكن استدعاؤها (تشغيلها) عدة مرات من أماكن مختلفة في البرنامج دون إعادة كتابة نفس الكود. هذا المبدأ يُعرف بـ DRY — اختصار "Do not Repeat Yourself" — وهو أحد أهم مبادئ البرمجة الجيدة.

توجد عدة طرق لتعريف دالة في جافاسكريبت. الأولى هي إعلان الدالة (Function Declaration) باستخدام الكلمة المفتاحية function متبوعة باسم الدالة — وهذا النوع يخضع لظاهرة الـ Hoisting الكاملة، أي يمكن استدعاؤه حتى قبل مكان تعريفه في الكود. الثانية هي تعبير الدالة (Function Expression)، حيث تُسند الدالة لمتغير، ولا تخضع لنفس Hoisting الكامل — يجب تعريفها قبل استدعائها.

لاستدعاء دالة (تشغيلها)، تكتب اسمها متبوعاً بقوسين ()، مع تمرير أي قيم مطلوبة (Arguments) داخل القوسين إذا كانت الدالة تتوقعها. الدالة يمكن أن "تُعيد" قيمة باستخدام return، وبمجرد تنفيذ return يتوقف تنفيذ الدالة فوراً ولا يُنفَّذ أي كود بعدها. إذا لم تحتوِ الدالة على return صريح، فهي تُعيد undefined تلقائياً.

الدوال تقبل معاملات (Parameters) عند تعريفها، وتُمرَّر لها قيم فعلية (Arguments) عند استدعائها. عدد المعاملات التي تتوقعها الدالة لا يجب أن يتطابق تماماً مع عدد القيم الممررة — إذا نقصت قيمة، يأخذ المعامل المقابل قيمة undefined تلقائياً.

الصياغة (Syntax)

syntax
1// إعلان دالة (Function Declaration)
2function جمع(أ, ب) {
3 return أ + ب;
4}
5
6// تعبير دالة (Function Expression)
7const طرح = function (أ, ب) {
8 return أ - ب;
9};
10
11console.log(جمع(5, 3)); // 8
12console.log(طرح(5, 3)); // 2

أمثلة عملية

مثال 1: دوال بدون معاملات ومع قيم افتراضية

دوال بدون معاملات ومع قيم افتراضية
1// دالة بدون معاملات
2function رسالة_ترحيب() {
3 console.log("أهلاً بك!");
4}
5رسالة_ترحيب();
6
7// دالة بمعاملات وقيمة افتراضية
8function تحية(اسم = "زائر") {
9 return `مرحباً يا ${اسم}!`;
10}
11console.log(تحية()); // "مرحباً يا زائر!"
12console.log(تحية("سارة")); // "مرحباً يا سارة!"

مثال 2: الفرق في Hoisting بين نوعي الدوال

الفرق في Hoisting بين نوعي الدوال
1// Hoisting: يعمل الإعلان حتى قبل تعريفه
2console.log(مربع(4)); // 16 — يعمل رغم أن الدالة عُرّفت لاحقاً
3
4function مربع(رقم) {
5 return رقم * رقم;
6}
7
8// لكن تعبير الدالة لا يعمل قبل تعريفه
9// console.log(تكعيب(2)); // ❌ خطأ
10const تكعيب = function (رقم) {
11 return رقم ** 3;
12};

نصائح احترافية

  • —إعلان الدالة (function name(){}) يخضع لـ Hoisting الكامل، أما تعبير الدالة (const x = function(){}) فلا.
  • —مجرد تنفيذ return يوقف الدالة فوراً — أي كود بعدها لن يُنفَّذ أبداً.
  • —إذا لم تكتب return، الدالة تُعيد undefined تلقائياً بصمت دون أي تحذير.
  • —اختر أسماء دوال واضحة تبدأ بفعل (احسب_، أنشئ_، تحقق_من_) لتوضيح ما تفعله الدالة فوراً.

الدرس السابق

التحكم في الحلقات (Break & Continue)

الدرس التالي

المعاملات والقيم المسترجعة

نوفيل

منصة تعليم البرمجة الأولى بالعربي. تعلم من الصفر حتى الاحتراف مع كورسات احترافية وتحديات ذكاء اصطناعي.

المنصة

  • الكورسات
  • التحديات
  • المقالات
  • الأدوات

الحساب

  • إنشاء حساب
  • تسجيل الدخول
  • لوحة التحكم
  • الملف الشخصي

روابط

  • سياسة الخصوصية
  • شروط الاستخدام
  • عن نوفيل
  • تواصل معنا

© 2026 نوفيل. جميع الحقوق محفوظة.

صُنع بـ في مصر