برای تعیین مقداری که تابع باید به عنوان نتیجه نهایی تولید کند از return استفاده کنید. هنگامی که مفسر به دستور return میرسد، تابعی که حاوی آن عبارت است بلافاصله پایان مییابد و مقدار مشخص شده به متنی که تابع فراخوانی شده است، برمیگردد:
const myFunction = function() {
return 2 + 2;
}
myFunction();
> 4
تابعی که یک مقدار را برمی گرداند می تواند به طور موثر به عنوان داده ای که در آن موجود است، مشابه یک متغیر در نظر گرفته شود:
const myFunction = function() {
return 2 + 2;
}
myFunction() + myFunction();
> 8
دستور return بدون عبارت تابع را به پایان میرساند و undefined برمیگرداند:
const myFunction = function() {
return;
}
myFunction();
> undefined
از آنجایی که کلمه کلیدی return پایان یک تابع را نشان می دهد، هر کدی که پس از return که با آن مواجه شده است اجرا نمی شود:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
myFunction();
> true
علاوه بر این، کدی که به دنبال یک عبارت return مواجه میشود ممکن است منجر به هشدار (اما نه یک خطا) در کنسولهای توسعه برخی از مرورگرها شود:
const myFunction = function() {
return true;
console.log( "This is a string." );
}
> unreachable code after return statement
myFunction();
> true
باز هم، این فقط برای یک دستور return که در طول اجرای تابع با آن مواجه می شود، اعمال می شود، نه هر کدی که به طور متوالی از یک عبارت return پیروی می کند:
const myFunction = function( myParameter ) {
if( myParameter === undefined ) {
return "This is the result.";
}
return "This is the alternate result.";
}
myFunction();
> "This is the result."
myFunction( true );
> "This is the alternate result."
"اتصال کوتاه" تابعی که از return اولیه استفاده می کند می تواند کد مختصرتری نسبت به یک عبارت return در انتهای یک تابع ایجاد کند. به عنوان مثال، تابع زیر تعیین می کند که آیا یک مقدار ارسال شده، رشته ای حاوی پنج یا بیشتر کاراکتر است یا خیر. اگر مقدار ارسال شده یک رشته واقعی نباشد، کدی که کاراکترها را می شمارد غیر ضروری است و تابع می تواند فوراً یک نتیجه false برگرداند:
function myFunction( myString ) {
if( typeof myString !== "string" ) {
return false;
}
if( myString.length >= 5 ) {
return true;
} else {
return false;
}
}
myFunction( 100 );
> false
myFunction( "St" );
> false
myFunction( "String." );
> true
عبارات تابع پیکان از این جهت منحصر به فرد هستند که کلمه کلیدی return زمانی که یک بدنه تابع فلش شامل یک عبارت واحد و بدون نحو بلوکی باشد، دلالت دارد:
const myFunction = () => 2 + 2;
myFunction();
> 4
اگر از دستور بلوک برای تعریف بدنه تابع پیکان استفاده می کنید، یک return صریح مورد نیاز است، حتی اگر بدنه تابع فقط شامل یک عبارت باشد:
const myFunction = () => { 2 + 2 };
myFunction();
> undefined
const myFunction = () => { return 2 + 2 };
myFunction();
> 4
درک خود را بررسی کنید
return برای چه مواردی استفاده می شود؟