if else และ switch case

 


if...else และ switch เป็นโครงสร้างควบคุมการทำงาน (control flow) ที่ใช้ในการตรวจสอบเงื่อนไข แต่มีลักษณะการใช้งานและข้อดีข้อเสียต่างกันครับ


1. ลักษณะการทำงาน

if...else

  • ใช้ตรวจสอบเงื่อนไขแบบ ตรรกะทั่วไป (Boolean expression) ได้หลากหลาย เช่น <, >, <=, >=, ==, ===, !=, !== หรือแม้แต่การเชื่อมหลายเงื่อนไขด้วย && และ ||
  • แต่ละเงื่อนไขสามารถซับซ้อนมากได้


if (score >= 80) { console.log("A"); } else if (score >= 70) { console.log("B"); } else { console.log("C"); }

switch

  • ใช้เมื่อมีการตรวจค่า ตัวแปรเดียว หรือ expression เดียว ว่าตรงกับกรณีใด (case) บ้าง
  • ไม่เหมาะกับเงื่อนไขที่เป็นช่วงตัวเลขหรือการเปรียบเทียบมาก ๆ


switch (grade) { case "A": console.log("Excellent"); break; case "B": console.log("Good"); break; default: console.log("Try harder"); }

2. ข้อดี / ข้อเสีย

ประเด็นif...elseswitch
ความยืดหยุ่น✅ สูง — ใช้เงื่อนไขซับซ้อน, หลายตัวแปร, คำนวณระหว่างเปรียบเทียบได้❌ จำกัด — เปรียบเทียบค่ากับ case แบบตรงตัว (หรือ expression ที่คืนค่าเดียว)
ความอ่านง่าย❌ ถ้าเงื่อนไขหลายชั้นมาก จะอ่านยากและรก✅ อ่านง่ายถ้ามีการตรวจค่าที่ชัดเจนหลายกรณี
ความเร็ว (สำหรับหลายเงื่อนไข)อาจช้ากว่านิดหน่อย เพราะต้องเช็กแต่ละเงื่อนไขแบบลำดับอาจเร็วกว่าเล็กน้อย เพราะเป็น jump table (ในบางภาษาหรือบาง compiler)
ความผิดพลาดใช้เงื่อนไขซับซ้อนอาจพลาด logic ได้ง่ายอาจลืมใส่ break ทำให้ fall-through ไป case ต่อไปโดยไม่ตั้งใจ
การเพิ่ม/แก้ไขยืดหยุ่นมาก เพิ่มเงื่อนไขได้อิสระง่ายถ้ากรณีเพิ่มเป็นค่าที่ชัดเจน
การใช้งานเหมาะกับเงื่อนไขซับซ้อน, หลายตัวแปร, การเปรียบเทียบช่วงตรวจค่าตัวแปรเดียวที่มีตัวเลือกตายตัว เช่น เมนู, สถานะ, คำสั่ง

3. คำแนะนำในการเลือกใช้

  • ใช้ if...else → ถ้าเงื่อนไขซับซ้อน, เกี่ยวข้องกับหลายตัวแปร, มีการเปรียบเทียบช่วง
  • ใช้ switch → ถ้าต้องตรวจค่าของตัวแปรเดียวที่มีตัวเลือกแน่นอน และต้องการความอ่านง่าย



ตัวอย่าง 1: if...else


let dayNumber = 3; if (dayNumber === 1) { console.log("วันจันทร์"); } else if (dayNumber === 2) { console.log("วันอังคาร"); } else if (dayNumber === 3) { console.log("วันพุธ"); } else if (dayNumber === 4) { console.log("วันพฤหัสบดี"); } else if (dayNumber === 5) { console.log("วันศุกร์"); } else if (dayNumber === 6) { console.log("วันเสาร์"); } else if (dayNumber === 7) { console.log("วันอาทิตย์"); } else { console.log("ค่าที่ใส่ไม่ถูกต้อง"); }

ข้อดี: ปรับเป็นเงื่อนไขซับซ้อนได้ง่าย เช่น <, >, &&
ข้อเสีย: ถ้ากรณีเยอะ โค้ดยาวและอ่านยาก


ตัวอย่าง 2: switch


let dayNumber = 3; switch (dayNumber) { case 1: console.log("วันจันทร์"); break; case 2: console.log("วันอังคาร"); break; case 3: console.log("วันพุธ"); break; case 4: console.log("วันพฤหัสบดี"); break; case 5: console.log("วันศุกร์"); break; case 6: console.log("วันเสาร์"); break; case 7: console.log("วันอาทิตย์"); break; default: console.log("ค่าที่ใส่ไม่ถูกต้อง"); }

ข้อดี: อ่านง่ายกว่าเมื่อเป็นการตรวจค่าตัวแปรเดียวหลายกรณี
ข้อเสีย: ไม่เหมาะกับเงื่อนไขซับซ้อน เช่น dayNumber >= 6 && dayNumber <= 7

แสดงความคิดเห็น (0)
ใหม่กว่า เก่ากว่า