چه زمانی از دستور return در توابع پیکانی ES6 استفاده کنیم؟
در ES6، توابع پیکانی (arrow functions) ویژگیهای خاصی دارند که در برخی شرایط، دستور return به طور ضمنی در نظر گرفته میشود. در اصول اولیه، هرگاه بدنه تابع پیکانی یک عبارت باشد و این عبارت در یک بلاک (که با آکولاد مشخص شده) قرار نگرفته باشد، return به طور ضمنی وجود دارد.
1. استفاده بدون بلاک:
هنگامی که تابع شامل یک عبارت بدون بلاک باشد، بازگشت به طور ضمنی انجام میشود. به عنوان مثال:
const greet = name => 'Hi ' + name;
console.log(greet('Jess')); // 'Hi Jess'
2. تعامل با بلاکها:
اگر یک تابع دارای یک بلاک آکولاد باشد و return نوشته نشود، مقدار بازگشتی undefined خواهد بود. مانند مثال زیر:
const greet = name => {
'Hi ' + name; // no return
};
console.log(greet('Jess')); // undefined
3. تولید اشیاء:
برای بازگرداندن اشیا، باید آنها را در پرانتز قرار داد تا از ایجاد خطا جلوگیری شود:
const createObject = name => ({ id: name }); // implicit return of object
console.log(createObject('Jess')); // { id: 'Jess' }
در غیر این صورت، اگر بلاک آکولاد استفاده شود و return نباشد، بهجای شی، undefined برمیگرداند.
4. استفاده در سایر کاربردها:
در برخی موارد مانند نوشتن کامپوننتهای تابعی در React، میتوان JSX را بدون نیاز به return به صورت ضمنی برگرداند:
const FunctionalComponent = () => (
<div>
<OtherComponent />
</div>
);
به طور کلی، زمانی که تنها یک عبارت کوتاه برای بازگشت وجود دارد و بلاک آکولاد استفاده نمیشود، نیازی به نوشتن return نیست. اما در شرایطی که بلاک یا چند عبارت وجود دارد، لازم است return به صراحت نوشته شود تا از خطاها و نامشخصی جلوگیری کنیم.