משתמשים ב-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."
"Short Cuiting" פונקציה שמשתמשת ב-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
?