ใช้ 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
เดี่ยวๆ ที่ส่วนท้ายของฟังก์ชัน ตัวอย่างเช่น ฟังก์ชันต่อไปนี้จะระบุว่าค่าที่ส่งเป็นสตริงที่มีอักขระตั้งแต่ 5 ตัวขึ้นไปหรือไม่ หากค่าที่ส่งให้ไม่ใช่สัญพจน์สตริง รหัสที่
นับจำนวนอักขระที่ไม่จำเป็น และฟังก์ชันสามารถแสดงผล 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
ใช้ทำอะไร