در حال بارگذاری...

برگرداندن مقدار

جلسهٔ قبل مقدار را به داخل تابع فرستادید. برنامهٔ واقعی اغلب به یک جواب بیرون هم نیاز دارد — جمع، برچسب، بله/خیر — تا صدازننده بتواند با همان نتیجه ادامه دهد. کلیدی که آن جواب را برمی‌گرداند 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 خودش چاپ نمی‌کند؛ ۷ را برمی‌گرداند. صدازننده آن را در 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);

return را فراموش کردید؟

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. تابع sum(x, y) بنویسید که x + y را برگرداند، صدا را در متغیر ذخیره کنید و همان را چاپ کنید.
  2. تابع hi(name) بنویسید که "hi " به‌علاوهٔ name را برگرداند؛ بعد رشتهٔ برگشتی را چاپ کنید.
  3. بعد از یک return داخل تابع یک console.log بگذارید؛ ببینید آن خط چاپ نمی‌شود.
  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%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود