switch statement สามารถมี return ได้ ก็ต่อเมื่ออยู่ภายในฟังก์ชัน การ return จะจบการทำงานของฟังก์ชันทันที โค้ดหลัง switch จะไม่ทำงาน — เหมาะสำหรับ mapping ค่า / lookup แบบไม่ต้อง break
ตัวอย่างโค้ด
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Return ใน Switch</title>
<style>
body { font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; }
.result { font-size: 20px; font-weight: 500; }
</style>
</head>
<body>
<h1>Return Statement ใน JavaScript Switch</h1>
ป้อนวัน 1-7 <input type="text" class="day" />
<button class="Btn">ตรวจสอบ</button>
<div style="color: green;" class="result"></div>
<h3>กดปุ่มเพื่อตรวจสอบวัน</h3>
<script>
const dayVal = document.querySelector(".day");
const resEle = document.querySelector(".result");
function returnDay(val) {
switch (val) {
case 1: return "วันจันทร์";
case 2: return "วันอังคาร";
case 3: return "วันพุธ";
case 4: return "วันพฤหัสบดี";
case 5: return "วันศุกร์";
case 6: return "วันเสาร์";
case 7: return "วันอาทิตย์";
default: return "กรุณากรอก 1-7";
}
}
document.querySelector(".Btn").addEventListener("click", () => {
resEle.textContent = returnDay(parseInt(dayVal.value, 10));
});
</script>
</body>
</html>
ผลลัพธ์

กรอก 1-7 กด "ตรวจสอบ":

รูปแบบอื่นๆ
// 1. Arrow function + switch expression (ไม่ได้ใน JS ตรงๆ แต่ pattern นี้)
const getDayName = (day) => {
switch (day) {
case 1: return "Mon";
// ...
}
};
// 2. Object Map (มักใช้แทน switch สำหรับ lookup แบบง่าย)
const DAYS = {
1: "วันจันทร์",
2: "วันอังคาร",
3: "วันพุธ",
4: "วันพฤหัสบดี",
5: "วันศุกร์",
6: "วันเสาร์",
7: "วันอาทิตย์",
};
const getDay = (n) => DAYS[n] ?? "Invalid day";
// 3. Map object (รองรับ key ทุกชนิด)
const dayMap = new Map([
[1, "Mon"], [2, "Tue"], [3, "Wed"],
[4, "Thu"], [5, "Fri"], [6, "Sat"], [7, "Sun"]
]);
const getDayMap = (n) => dayMap.get(n) ?? "Invalid";
// 4. Switch expression (Proposal - Stage 1) - ยังไม่มีใน JS
// const result = switch (x) { case 1 -> "one"; case 2 -> "two"; };
เมื่อไหร่ควรใช้ Switch + Return
- Logic ซับซ้อนในแต่ละ case (หลายบรรทัด, มีเงื่อนไข)
- ต้องการ fall-through (ไม่มี break) โดยเจตนา
- Range checking:
case 1: case 2: case 3: return "low"; - Multiple conditions:
case x > 0: return "positive";(ใช้switch (true))
Switch (true) Pattern
function describeNumber(n) {
switch (true) {
case n > 100: return "มากมาย";
case n > 10: return "ปานกลาง";
case n > 0: return "น้อย";
case n === 0: return "ศูนย์";
default: return "ติดลบ";
}
}
⚠️ ข้อผิดพลาดที่พบบ่อย
// ❌ ผิด: return นอกฟังก์ชัน
switch (x) {
case 1: return "one"; // SyntaxError: Illegal return statement
}
// ❌ ผิด: ลืม return ในบาง case
function foo(x) {
switch (x) {
case 1: return "one";
case 2: "two"; // ไม่มี return! คืน undefined
}
}