משתמשים ב-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?