JavaScript : Statement Switch…Case

Pernyataan switch..case adalah alternatif untuk pernyataan if…else if…else, yang melakukan hal yang mirip. Pernyataan switch…case menguji variabel atau ekspression terhadap serangkaian nilai hingga menemukan kecocokan, dan kemudian mengeksekusi blok kode yang sesuai dengan kecocokan itu. Sintaksnya adalah:

switch(x){
    case value1:
        // Code to be executed if x === value1
        break;
    case value2:
        // Code to be executed if x === value2
        break;
    ...
    default:
        // Code to be executed if x is different from all values
}

Perhatikan contoh berikut, yang menampilkan nama hari dalam seminggu.

var d = new Date();
	
switch(d.getDay()) {
	case 0:
		alert("Today is Sunday.");
		break;
	case 1:
		alert("Today is Monday.");
		break;
	case 2:
		alert("Today is Tuesday.");
		break;
	case 3:
		alert("Today is Wednesday.");
		break;
	case 4:
		alert("Today is Thursday.");
		break;
	case 5:
		alert("Today is Friday.");
		break;
	case 6:
		alert("Today is Saturday.");
		break;   
	default:
		alert("No information available for that day.");
		break;
}

Metode getDay() mengembalikan weekday sebagai angka dari 0 dan 6, di mana 0 mewakili hari Minggu.

Catatan: Dalam pernyataan switch…case, nilai ekspression atau variabel dibandingkan terhadap nilai kasus menggunakan operator strict equality (===). Itu berarti jika x = “0”, itu tidak cocok dengan case 0:, karena tipe datanya tidak sama.

Pernyataan switch…case berbeda dari pernyataan if…else. Pernyataan switch..case mengeksekusi baris per baris (yaitu pernyataan demi pernyataan) dan begitu JavaScript menemukan case clause yang bernilai true, hal tersebut tidak hanya akan mengeksekusi kode yang sesuai dengan case clause tersebut, tetapi juga mengeksekusi semua case clause berikutnya hingga akhir dari switch…case ter-blok secara otomatis.

Untuk mencegah hal ini, kalian harus menyertakan pernyataan break setelah setiap case (seperti yang kalian lihat pada contoh di atas). Pernyataan break memberitahu JavaScript untuk keluar dari blok pernyataan switch…case setelah mengeksekusi kode yang terkait dengan kasus nyata pertama.

Namun pernyataan break tidak diperlukan untuk case atau default clause, ketika hal itu muncul di akhir dalam pernyataan switch. Meskipun, itu praktik pemrograman yang baik untuk mengakhiri case terakhir, atau default clause dalam pernyataan switch dengan break. Hal ini akan mencegah kemungkinan kesalahan pemrograman jika pernyataan case lain ditambahkan ke pernyataan switch.

Default clause adalah opsional, yang menentukan tindakan yang harus dilakukan jika tidak ada case yang cocok dengan switch expression. Default clause tidak harus menjadi klausa terakhir yang muncul dalam pernyataan switch. Berikut contohnya, di mana default bukan klausa terakhir.

var d = new Date();

switch(d.getDay()) {
    default: 
        alert("Looking forward to the weekend.");
        break;
    case 6:
        alert("Today is Saturday.");
        break; 
    case 0:
        alert("Today is Sunday.");
}

Multiple Cases Sharing Same Action

Setiap nilai case harus unik dalam pernyataan switch. Namun, berbagai cases tidak perlu memiliki tindakan yang unik. Beberapa case dapat berbagi tindakan yang sama, seperti yang ditunjukkan di sini:

var d = new Date();

switch(d.getDay()) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        alert("It is a weekday.");
        break; 
    case 0:
    case 6:
        alert("It is a weekend day.");
        break;
    default: 
        alert("Enjoy every day of your life.");
}