سلام دوستان. توی قسمت‌های قبل گفتیم که توابع مسئول انجام دادن کارهای مشخصی هستن. زمان‌هایی وجود داره که ما خروجیِ کاری که انجام دادیم رو احتیاج داریم. ما با استفاده از کلمه‌کلیدی return می‌تونیم خروجی یک تابع رو مشخص کنیم:

function welcome() {
>>   return "Welcome dear user!";
}

الان خروجی تابع welcome، چیزی هست که جلوی return قرار گرفته. ما می‌تونیم از چیزی که یک تابع return می‌کنه توی شرایط مختلف استفاده کنیم. مثلاً می‌تونیم به شکل زیر اون رو بریزیم توی یک متغیر:

function welcome() {
  return "Welcome dear user!";
}

>> const message = welcome();

alert(message);

توی خط ۵ تابع welcome رو اجرا کردیم. هر خروجی که این تابع داشته باشه ریخته میشه توی متغیر message. کد رو اجرا کنین تا مقدار متغیر message رو ببینین.

یک مثال سنتی تابع جمع دو عدد هست:

function add(x, y) {
  <<return x + y>>;
}

alert(add(5, 10)); // 15
alert(add(2, 4));  // 6

مثالی که توی قسمت اول توابع داشتیم رو به یاد بیاریم:

const price = 1500;
const discountPrice = price - (price * 30 / 100);

گفتیم که این کد، تخفیف یک محصول رو محاسبه می‌کنه. برای بهتر کردن این کد، یک تابع بسازیم و کد بالا رو ببریم توی تابع که بتونیم از اون استفاده کنیم:

function calculateDiscount(price, discount) {
  return price - (price * discount / 100);
}

const price1 = calculateDiscount(1500, 30);
const price2 = calculateDiscount(5000, 20);
const price3 = calculateDiscount(6000, 10);

alert(price1); // 1050
alert(price2); // 4000
alert(price3); // 5400

همونطور که می‌بینیم عملیات محاسبه تخفیف رو فقط یک بار نوشتیم و تونستیم بی‌نهایت بار از اون استفاده کنیم. علاوه بر اینکه کدهای ما خواناتر شد، با حذف کردن کدهای تکراری تونستیم کاربرد پذیری برنامه‌مون رو افزایش بدیم 👌

 

نکته‌ها

هنگام استفاده از return باید به چند نکته دقت کنیم:

۱. کدهایی که توی خط‌های بعد از return می‌نویسیم اجرا نمی‌شن و کلاً نادیده گرفته میشن:

function welcome() {
  return "Welcome to our app!";

  <<<alert();>>> // ignored;
  <<<alert();>>> // ignored;
  <<<alert();>>> // ignored;
}

welcome();

توی کد بالا، خط‌های بعد از return یعنی ۳ تا ۶ همگی نادیده گرفته شدن.

۲. برای return کردن یک مقدار طولانی دو راه داریم. اول اینکه همه رو توی یک خط بنویسیم:

function longReturn() {
  return "This is a long text This is another long text This is is a long text  This is is a long text";
}

همونطور که می‌بینیم خوانایی پایین میاد و شاید به این فکر بیوفتیم که این رشته رو بشکنیم به چند خط. اگه یک مقدار چند خطی رو می‌خوایم return کنیم باید از پرانتزها استفاده کنیم:

function longReturn() {
  return <<(>>
    "This is a long text"
    + "This is another long text"
    + "This is is a long text";
  <<)>>;
}

اگه از پرانتز استفاده نکنیم، کد بالا به صورت زیر در نظر گرفته میشه و طبق اولین نکته، باعث میشه خط‌های بعدی اجرا نشن:

function longReturn() {
  return
    <<<"This is a long text">>>
    <<<+ "This is another long text">>>
    <<<+ "This is is a long text";>>>
}

۳. یک تابع فقط می‌تونه یک خروجی داشته باشه:

function welcome() {
  return "Welcome to our app!";

  <<<return "Let's take a tour">>>;
}

توی این کد، return دوم نادیده گرفته میشه.

۴. تابعی که return نداشته باشه، خروجی اون undefined هست:

function noReturn() {
  // ...
}

alert(noReturn()); // undefined

 

خب دوستان چیزهایی که برای الان درباره توابع باید می‌دونستیم اینجا کامل شد. به ادامه قسمت‌ها برید تا با جزییات بیشتری از این زبان آشنا بشین 😉🖐️

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions

https://www.w3schools.com/js/js_functions.asp

javascript.info/function-basics

developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions