جاري التحميل...

معاملات الدالة

في الدرس السابق غلّفتَ الخطوات تحت اسم؛ وبقيت الأقواس فارغة. البرامج الحقيقية تحتاج مدخلات — اسماً، مجاميع، رسالة — حتى يعمل الجسم نفسه بقيم مختلفة. تلك الفتحات المسماة هي المعاملات (parameters). والقيم التي تمرّرها عند الاستدعاء هي الوسائط (arguments).

المعامل والوسيط

عندما تكتب function greet(name) { … } يكون name معاملاً: اسماً محلياً داخل الجسم. وعندما تكتب greet("Sara") تكون "Sara" وسيطاً: القيمة الفعلية التي تملأ تلك الفتحة لهذه الاستدعاء. وصفة واحدة، مكونات مختلفة.

أين يُكتب كل شيء

📊 المعامل مقابل الوسيط

الفكرة أين تكتبها مثال يومي
المعامل داخل () عند التعريف وعاء فارغ عليه ملصق name
الوسيط داخل () عند الاستدعاء الطعام الذي تصبّه — "Sara"
الترتيب من اليسار لليمين الوسيط الأول → المعامل الأول
الافتراضي name = "friend" في التعريف الوعاء فيه احتياطي إن لم تجلب شيئاً
فتحة ناقصة استدعاء بعدد أقل يصبح المعامل undefined ما لم يوجد افتراضي

المعاملات على التعريف. الوسائط تظهر مع كل استدعاء. خلط الكلمتين خطأ شائع للمبتدئين — أبقِ الجدول قريباً حتى تثبت العادة.

معامل واحد

javascript
function greet(name) {
console.log("Hello, " + name);
}
greet("Sara");

مدخل واحد، فتحة واحدة

name ينتظر داخل greet. الاستدعاء يمرّر "Sara". الجسم يبني Hello, Sara ويطبعه. غيّر الوسيط وأبقِ الجسم — هذه فائدة المعاملات.

معاملان

javascript
function add(a, b) {
console.log(a + b);
}
add(3, 4);

فتحتان، قيمتان

اكتب المعاملات بفواصل: a, b. مرّر الوسائط بنفس الترتيب: 3 إلى a و4 إلى b. السجل يظهر 7. الجسم لا يثبّت هذه الأرقام — الاستدعاء يوفّرها.

الترتيب مهم

javascript
function label(color, surface) {
console.log(color + " on " + surface);
}
label("red", "wall");
label("wall", "red");

الترتيب هو العقد

الاستدعاء الأول يطبع red on wall. والثاني wall on red — نفس الدالة، وسائط متبادلة. JavaScript لا يخمن أي قيمة «تشبه» لوناً. الموضع يقرر.

معامل افتراضي

javascript
function greetFriend(name = "friend") {
console.log("Hi, " + name);
}
greetFriend("Ali");
greetFriend();

قيمة احتياطية عند الغياب

name = "friend" يضع افتراضياً. greetFriend("Ali") يستخدم "Ali". وgreetFriend() بأقواس فارغة يستخدم "friend". الافتراضي يحمي الجسم عندما يتخطى المستدعي فتحة.

وسيط ناقص يصبح undefined

javascript
function showId(id) {
console.log(id);
}
showId();

بلا قيمة وبلا افتراضي

showId() لا يمرّر شيئاً إلى id. بلا افتراضي يصبح id هو undefined ويُطبع كذلك. ليس تعطلاً — إشارة أنك نسيت وسيطاً أو تحتاج افتراضياً.

مرّر نصاً إلى الصفحة

نفس نمط DOM السابق، لكن الرسالة تُبنى من الوسيط. دالة واحدة ترحّب بضيوف مختلفين — يتغير الاستدعاء فقط. عرض HTML أدناه يفعل ذلك تماماً.

أظهر المعاملات على الصفحة

عرّف دالة تأخذ اسم الضيف، اكتب ترحيباً قصيراً في فقرة، ثم استدعِها بنص حقيقي.

استدعاء بوسيط في الصفحة

html
<!DOCTYPE html>
<html>
<head>
<title>parameters — page</title>
</head>
<body>
<p id="msg">…</p>
<script>
function welcome(guest) {
let box = document.getElementById("msg");
box.textContent = "Hello, " + guest;
}
welcome("Omar");
</script>
</body>
</html>

الصفحة تعرض Hello, Omar. guest كان المعامل؛ "Omar" كان الوسيط. غيّر النص في الاستدعاء فقط، حدّث الصفحة، واقرأ السطر الجديد. الدرس التالي عن return — إخراج قيمة من الدالة.

جرّب بنفسك

  1. اكتب function hello(name) تطبع "hi " مع name، ثم استدعِها باسمك.
  2. اكتب function sum(x, y) تطبع x + y، ثم استدعِها برقمين.
  3. استدعِ دالة بمعاملين مرتين مع عكس الوسائط وقارن السجلات.
  4. أضف افتراضياً مثل title = "guest" واستدعِ مرة بقيمة ومرة بـ () فارغ.
  5. استدعِ دالة بمعامل واحد بلا وسيط وبلا افتراضي؛ تأكد من undefined في وحدة التحكم.
  6. في عرض HTML غيّر نص الوسيط فقط، حدّث، واقرأ الفقرة.

أخطاء شائعة

  • استدعاء بـ () فارغ والجسم يحتاج قيمة — تحصل على undefined ما لم يوجد افتراضي
  • عكس ترتيب الوسائط وتوقع أن JavaScript «يعرف» أيها لأيها
  • خلط المعامل (التعريف) مع الوسيط (الاستدعاء)
  • نسيان الفاصلة بين معاملين أو وسيطين
  • البحث عن قيمة مُرجَعة هنا — ذلك الدرس التالي؛ هذه الصفحة عن المدخلات فقط

ملخص

  • المعاملات أسماء داخل () التعريف
  • الوسائط قيم تمرّرها عند الاستدعاء
  • الترتيب من اليسار لليمين — الأول مع الأول، الثاني مع الثاني
  • الافتراضي يملأ الفتحة عندما يتخطاها المستدعي
  • الفتحة الناقصة بلا افتراضي تصبح undefined
  • تحديث الصفحة يمكن أن يستخدم القيمة الممرّرة في الرسالة
  • التالي: return — أرسل نتيجة من الدالة إلى الخارج

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
8
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى