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