คำสั่งสวิตช์มีความสัมพันธ์อย่างใกล้ชิดที่สุดกับคำสั่ง IF และยังเป็นคำสั่งควบคุมกระบวนการที่ใช้กันทั่วไปในภาษาการเขียนโปรแกรมอื่น ๆ อย่างไรก็ตามการจับคู่สวิตช์เป็นรูปแบบที่สอดคล้องกัน หากคุณไม่ใส่ใจกับรายละเอียดนี้คุณมักจะทำผิดพลาดเมื่อเขียนโปรแกรม
รหัส:
var n = '5'; switch (n) {กรณีที่ 5: การแจ้งเตือน ('ดำเนินการสาขาเคส'); break; เริ่มต้น: การแจ้งเตือน ('เรียกใช้สาขาเริ่มต้น');}ผลลัพธ์:
หลายคนอาจคิดผิดพลาดว่าโปรแกรมข้างต้นจะไปที่สาขาเคส แต่ท้ายที่สุดมันจะไปที่สาขาเริ่มต้น พวกเขาไม่เท่ากัน? มาใช้คำสั่ง IF เพื่อดู
รหัส:
var n = '5'; ถ้า (n == 5) {แจ้งเตือน ('สาขาจริง');} else {Alert ('False Branch');}ผลลัพธ์:
มันสามารถจับคู่ในคำสั่ง if แต่ทำไมมันไม่สามารถจับคู่ในคำสั่ง switch ได้?
นี่เป็นเพราะกรณีในคำสั่งสวิตช์ใช้โหมดการบรรจบกันซึ่งเทียบเท่ากับการใช้สัญญาณที่เท่าเทียมกันสามครั้งใน IF มาเขียนรหัสของเคสกันใหม่
รหัส:
var n = '5'; switch (n) {case '5': // rewrite กรณีดั้งเดิม 5 เป็นกรณี '5'alert (' ดำเนินการสาขาเคส '); break; เริ่มต้น: การแจ้งเตือน (' เรียกใช้สาขาเริ่มต้น ');}ผลลัพธ์:
หลังจากเขียนใหม่แล้วคุณสามารถไปที่สาขาเคสได้เช่นเดียวกับที่เราใช้สัญญาณที่เท่าเทียมกันสามครั้งใน IF
รหัส:
var n = '5'; ถ้า (n === 5) {แจ้งเตือน ('สาขาจริง');} else {Alert ('False Branch');}ผลลัพธ์:
เนื่องจากใช้การบรรจบกันสตริง 5 ไม่เท่ากับหมายเลข 5 และสาขาเท็จจะหายไป
ตัวอย่างข้างต้นแสดงให้เห็นว่า ปัญหาที่ต้องให้ความสนใจเมื่อใช้รูปแบบการจับคู่ที่สอดคล้องกันในสวิตช์โดยเฉพาะอย่างยิ่งเมื่อตัวเลขตรงกับสตริง