برای تعیین مقداری که تابع باید به عنوان نتیجه نهایی تولید کند از 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
برای چه مواردی استفاده می شود؟