برگرداندن مقدار
جلسهٔ قبل مقدار را به داخل تابع فرستادید. برنامهٔ واقعی اغلب به یک جواب بیرون هم نیاز دارد — جمع، برچسب، بله/خیر — تا صدازننده بتواند با همان نتیجه ادامه دهد. کلیدی که آن جواب را برمیگرداند 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 است — چون چیزی برنگشته.
function add(a, b) {
return a + b;
}
let total = add(3, 4);
console.log(total);
نتیجه را بگیرید
add خودش چاپ نمیکند؛ ۷ را برمیگرداند. صدازننده آن را در total میگذارد و بعد چاپ میکند. آرگومان را عوض کنید، بدنه را نگه دارید — جمعِ برگشتی با ورودیها میآید.
function greet(name) {
return "Hello, " + name;
}
let line = greet("Sara");
console.log(line);
مقداری بسازید برای بعد
greet یک رشته میسازد و بیرون میفرستد. line همان Hello, Sara را دارد. میتوانید line را به صفحه، به تابع دیگر، یا به تست بدهید — return استفادهٔ دوباره بیرون از بدنه را باز کرد.
function demo() {
console.log("first");
return 1;
console.log("second");
}
demo();
بعد از return چیزی اجرا نمیشود
این صدا اول first را چاپ میکند، بعد 1 را برمیگرداند. خطی که باید second را چاپ کند هرگز نمیرسد. باگ نیست — return همان لحظه صدا را تمام میکند.
function label(score) {
if (score < 0) {
return "invalid";
}
return "ok";
}
console.log(label(-1));
console.log(label(10));
وقتی جواب آماده است زود خارج شوید
اگر score منفی باشد، تابع "invalid" برمیگرداند و بقیه را رد میکند؛ وگرنه "ok". این خروج زودهنگام مسیر عادی را کوتاه و خوانا نگه میدارد.
function shout(msg) {
console.log(msg);
}
let result = shout("hi");
console.log(result);
return را فراموش کردید؟
shout فقط چاپ میکند. صدا تمام میشود، ولی با undefined. ذخیرهٔ آن صدا undefined را در result میگذارد. اگر بیرون به مقدار نیاز دارید، صریح return بنویسید.
مقدار برگشتی را روی صفحه بگذارید
پیام را با return بسازید، بعد همان رشته را داخل پاراگراف بنویسید. تابع روی ساختن متن تمرکز میکند؛ کد صفحه تصمیم میگیرد کجا دیده شود.
return را روی صفحه نشان دهید
تابعی بنویسید که رشتهٔ خوشآمد برگرداند، صدا بزنید، و نتیجه را داخل پاراگراف بگذارید.
<!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 رشته را برگرداند؛ خط بعدی آن را در پاراگراف نوشت. فقط آرگومان را عوض کنید، تازه کنید، خط تازه را بخوانید. جلسهٔ بعد توابع پیکانی است — شکل کوتاهتر برای بعضی از همین توابع.
خودتان امتحان کنید
- تابع
sum(x, y)بنویسید کهx + yرا برگرداند، صدا را در متغیر ذخیره کنید و همان را چاپ کنید. - تابع
hi(name)بنویسید که"hi "بهعلاوهٔnameرا برگرداند؛ بعد رشتهٔ برگشتی را چاپ کنید. - بعد از یک
returnداخل تابع یکconsole.logبگذارید؛ ببینید آن خط چاپ نمیشود. - نگهبان بنویسید: اگر
n === 0باشد"zero"برگردانید، وگرنه"nonzero". - تابعی را که فقط
console.logمیکند صدا بزنید و ذخیره کنید؛ ببینیدundefinedمیگیرید. - در دموی HTML فقط رشتهٔ آرگومان را عوض کنید، تازه کنید، پاراگراف را بخوانید.
اشتباههای رایج
- فقط داخل تابع
console.logکردن و انتظار داشتن کهlet x = f()مقدار مفید بگیرد - فراموش کردن ذخیره یا استفاده از مقدار برگشتی موقع صدا
- نوشتن کد بعد از
returnو تعجب از اجرا نشدن - نوشتن
return;خالی وقتی منظورتانreturn value;بوده - دنبال ترفند پارامتر گشتن اینجا — این صفحه دربارهٔ خروجی است؛ ورودی جلسهٔ قبل بود
خلاصه
returnمقدار را به صدازننده میفرستد- آن مقدار را بیرون از تابع ذخیره یا استفاده کنید
- بعد از
returnبقیهٔ همان صدا رد میشود - خروج زودهنگام برای حالتهای خاص راه تمیزی است
- بدون
return(یاreturnخالی) → صداundefinedمیدهد - بهروزرسانی صفحه میتواند از رشتهٔ برگشتی استفاده کند
- بعدی: توابع پیکانی — نحو فشرده برای تابع
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود