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

إرجاع القيمة

في الدرس السابق أرسلتَ قيماً إلى داخل الدالة. البرامج الحقيقية تحتاج غالباً قيمة خارجة أيضاً — مجموع، تسمية، نعم/لا — حتى يكمل المستدعي العمل بالنتيجة. الكلمة التي تُرجع تلك النتيجة هي return.

ماذا يفعل return

داخل جسم الدالة تكتب return expression;. تحسب JavaScript التعبير، تسلّم القيمة للمستدعي، وتنهي ذلك الاستدعاء. يمكن للمستدعي حفظها: let total = add(3, 4); — هنا يصبح total مساوياً لـ 7.

return ليس مثل الطباعة

📊 return مقابل console.log

الفكرة ماذا يفعل من يراه
return value يرسل value للمستدعي سطر الكود التالي لديك
console.log(value) يطبع value في وحدة التحكم من يراقب وحدة التحكم
كلاهما يمكنك الطباعة والإرجاع معاً الطباعة للعين؛ return للبرنامج
بلا return ينتهي الاستدعاء بـ undefined حفظ الاستدعاء يعطي undefined
بعد return تُتخطى الأسطر اللاحقة في ذلك الاستدعاء الخروج المبكر مقصود

الطباعة تساعدك على الاطلاع. الإرجاع يتيح لبقية البرنامج استخدام الجواب. المبتدئون غالباً يطبعون داخل الدالة ثم يتعجبون لماذا let x = f() يساوي undefined — لأنه لم يُرجَع شيء.

إرجاع رقم

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

التقط النتيجة

add لا تطبع بنفسها. هي تُرجع 7. المستدعي يخزّن ذلك في total ثم يطبع. غيّر الوسائط وأبقِ الجسم — المجموع المُرجَع يتبع المدخلات.

إرجاع سلسلة

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

ابنِ قيمة للاستخدام لاحقاً

greet تبني سلسلة وتُرجعها. line يحمل Hello, Sara. يمكنك تمرير line إلى الصفحة أو دالة أخرى أو اختبار — return فتح إعادة الاستخدام خارج الجسم.

return يوقف الدالة

javascript
function demo() {
console.log("first");
return 1;
console.log("second");
}
demo();

لا شيء بعد return يُنفَّذ

هذا الاستدعاء يطبع first ثم يُرجع 1. السطر الذي كان سيطبع second لا يعمل أبداً. هذا ليس خطأ — return ينهي الاستدعاء فوراً.

خروج مبكر

javascript
function label(score) {
if (score < 0) {
return "invalid";
}
return "ok";
}
console.log(label(-1));
console.log(label(10));

اخرج مبكراً عندما يكون الجواب جاهزاً

إذا كان score سالباً تُرجع الدالة "invalid" وتتخطى الباقي. وإلا تُرجع "ok". هذا الخروج المبكر يُبقي المسار السعيد قصيراً وواضحاً.

بلا return يعني undefined

javascript
function shout(msg) {
console.log(msg);
}
let result = shout("hi");
console.log(result);

نسيتَ الإرجاع؟

shout تطبع فقط. الاستدعاء ينتهي، لكن بـ undefined. حفظ ذلك الاستدعاء يضع undefined في result. إن احتجت قيمة خارجاً، اكتب return صريحاً.

ضع القيمة المُرجَعة على الصفحة

ابنِ الرسالة بـ return، ثم اكتب تلك السلسلة في فقرة. تبقى الدالة مركّزة على إنتاج النص؛ كود الصفحة يقرر أين تظهر.

اعرض return على الصفحة

عرّف دالة تُرجع سلسلة ترحيب، استدعِها، وضع النتيجة في فقرة.

استدعاء بقيمة مُرجَعة في الصفحة

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

الصفحة تعرض Hello, Omar. welcome أرجعت السلسلة؛ السطر التالي كتبها في الفقرة. غيّر الوسيط فقط، حدّث، واقرأ السطر الجديد. الدرس التالي دوال السهم — طريقة أقصر لكتابة بعض هذه الدوال.

جرّبها بنفسك

  1. اكتب function sum(x, y) تُرجع x + y، خزّن الاستدعاء في متغير، واطبع ذلك المتغير.
  2. اكتب function hi(name) تُرجع "hi " مع name، ثم اطبع السلسلة المُرجَعة.
  3. ضع console.log بعد return داخل دالة؛ تأكد أن ذلك السطر لا يُطبع.
  4. اكتب حارساً: إن كان n === 0 أرجع "zero" وإلا "nonzero".
  5. استدعِ دالة تطبع فقط بـ console.log وخزّن الاستدعاء؛ تأكد أنك تحصل على undefined.
  6. في عرض HTML غيّر سلسلة الوسيط فقط، حدّث، واقرأ الفقرة.

أخطاء شائعة

  • الاعتماد على console.log فقط داخل الدالة وتوقّع أن let x = f() يحمل قيمة مفيدة
  • نسيان حفظ أو استخدام القيمة المُرجَعة عند الاستدعاء
  • كتابة كود بعد return والتعجب لماذا لا يعمل
  • كتابة return; فارغ وأنت تقصد return value;
  • البحث عن حيل المعاملات هنا — هذه الصفحة عن المخرجات؛ المدخلات كانت الدرس السابق

ملخص

  • return يرسل قيمة إلى المستدعي
  • خزّن تلك القيمة أو استخدمها خارج الدالة
  • بعد return يُتخطى باقي ذلك الاستدعاء
  • الخروج المبكر طريقة نظيفة لإنهاء الحالات الخاصة
  • بلا return (أو return فارغ) → الاستدعاء يعطي undefined
  • تحديث الصفحة يمكن أن يستخدم سلسلة مُرجَعة
  • التالي: دوال السهم — صيغة مختصرة للدوال

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

جاهز للبدء

اختبر معرفتك

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

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

📝 التعليمات

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