Pernyataan sakelar paling dekat terkait dengan pernyataan IF, dan juga merupakan pernyataan kontrol proses yang biasa digunakan dalam bahasa pemrograman lainnya. Namun, kecocokan sakelar adalah pola kongruen. Jika Anda tidak memperhatikan detail ini, Anda akan sering membuat kesalahan saat menulis program.
Kode:
var n = '5'; switch (n) {case 5: alert ('Execute case branch'); break; default: alert ('jalankan cabang default');}hasil:
Banyak orang mungkin secara keliru berpikir bahwa program di atas akan pergi ke cabang kasus, tetapi pada akhirnya, itu akan pergi ke cabang default. Apakah mereka tidak setara? Mari kita gunakan pernyataan IF untuk melihat.
Kode:
var n = '5'; if (n == 5) {alert ('True Branch');} else {waspada ('false branch');}hasil:
Ini dapat dicocokkan dalam pernyataan IF, tetapi mengapa tidak dapat dicocokkan dalam pernyataan sakelar?
Ini karena kasus dalam pernyataan sakelar menggunakan mode konvergensi, yang setara dengan penggunaan tiga tanda yang sama dalam IF. Mari kita tulis ulang kode kasus ini
Kode:
var n = '5'; switch (n) {case '5': // Tulis ulang kasus asli 5 ke dalam case '5'alert (' Execute case cabang '); break; default: ware (' jalankan cabang default ');}hasil:
Setelah menulis ulang, Anda dapat pergi ke cabang case, sama seperti kami menggunakan tiga tanda yang sama di jika
Kode:
var n = '5'; if (n === 5) {alert ('True Branch');} else {waspada ('false branch');}hasil:
Karena konvergensi digunakan, string 5 tidak sama dengan angka 5, dan cabang palsu hilang.
Contoh di atas menunjukkan bahwa masalah yang perlu diperhatikan saat menggunakan pola pencocokan yang kongruen di Switch, terutama ketika angka cocok dengan string.