JavaScript – Switch
Switch-Case yapısının çalışma mantığı ilk olarak switch parantezi içindeki durumun değerinin hesaplanıp
eşleşişen case ifadesine göre kod bloğunu çalıştırmaktır. Case bloğundaki kodların çalıştıktan sonra durması için Break deyimini kullanırız.
Peki, hiç bir case ifadesi switch içindeki durumla eşleşmezse ne olacak? Burada default bloğu devreye girerek hiç bir durumun sağlanmadığı anda çalışacaktır.
Hemen bir örnek yapalım;
let sayi1 = 10;
let sayi2 = 20;
let topla = sayi1 + sayi2;
switch(topla)
{
case 1:
console.log(“Topla 1’e eşittir.”);
break;
case 2:
console.log(“Topla 2’e eşittir.”);
break;
case 3:
console.log(“Topla 3’e eşittir.”);
break;
default:
console.log(“Topla değişkeni case durumu ile eşleşmedi.”);;
break;
}
Burada switch toplam değerinin 30 olduğunu biliyor ve case 30 ile eşleşmesi gerek ama 3 adet case ve 1 adet default kullandık.
Ekran çıktısı burada default kod bloğunun çalışması ile “Topla değişkeni case durumu ile eşleşmedi.” olacaktır.
Şimdi bu 3 adet sıralı bir şekilde yazdığımız case ifadelerinin birini 30 yapalım ve ekrana “Topla 30’a eşittir.” yazdıralım.
let sayi1 = 10;
let sayi2 = 20;
let topla = sayi1 + sayi2;
switch(topla)
{
case 1:
console.log(“Topla 1’e eşittir.”);
break;
case 2:
console.log(“Topla 2’e eşittir.”);
break;
case 30:
console.log(“Topla 30’a eşittir.”);
break;
default:
console.log(“Topla değişkeni case durumu ile eşleşmedi.”);
break;
}
Bakın burada ekrana “Topla 30’a eşittir.” yazılacaktır. Çünkü switch durumu ve case durumu birbirine eşitse, case durumu eşit olan kod bloğu çalışır.
Başka bir örnek daha yapalım;
let sayim1 = 5;
let sayim2 = 7;
let deger = “+”;
let toplamDeger = sayim1+sayim2;
switch(deger)
{
case “+”:
console.log(“Bu bir toplama işlemidir. Sonucu : “+toplamDeger);
break;
case “-“:
console.log(“Bu bir çıkarma işlemidir. Sonucu : “+toplamDeger);
break;
case “*”:
console.log(“Bu bir çarpma işlemidir. Sonucu : “+toplamDeger);
break;
case “/”:
console.log(“Bu bir bölme işlemidir. Sonucu : “+toplamDeger);
break;
default:
console.log(“Hata Mesajı”);
break;
}
Yukarıdaki örnekte switch içindeki değer durumu case “+” ile eşleşiyor ve bunun bir toplama işlemi olduğunu söyleyip konsol’a toplamDeger değişkenini yazıyor yazdırıyor.
İsterseniz deger değişkenini “-” olarak değiştirip toplamDeger değişkenini de artı dan eksiye çevirip deneyin.
Ekran çıktısı şu şekilde olacaktır: “Bu bir çıkarma işlemidir. Sonucu : -2”
Eğer bu kodlar içinde case durumundan sonra break; (kırmak,durdurmak) kullanmazsak bir hemen altındaki case bloğu da çalışır ve break; içeriyorsa program durur eğer o case de break içermiyorsa break; komutunun yazıldığı yere kadar çalışır ve break görünce durur.
Eğer hiç tüm case durumları break içermiyorsa ve bir case durumu switch ile eşleşiyorsa eşleşilen case bloğundan itibaren tüm kodlar ekrana yazdırılır.
Alttaki kod bu durumun bir örneği.
let sayi1 = 10;
let sayi2 = 20;
let topla = sayi1 + sayi2;
switch(topla)
{
case 30:
console.log(“Topla 30’e eşittir.”);
case 2:
console.log(“Topla 2’e eşittir.”);
case 31:
console.log(“Topla 31’e eşittir.”);
default:
console.log(“Toplam sayı case durumu ile eşleşmedi.”);
}
ilk case ifadesi switch ile aynı durumda ama break kullanılmamış.
Ekran çıktısı şu şekilde olacaktır;
Topla 30’e eşittir.
Topla 2’e eşittir.
Topla 31’e eşittir.
Toplam sayı case durumu ile eşleşmedi.
Çoklu Switch-Case kullanımını da bir örnek verelim nedir bu çoklu case kullanımı?
let cicek = ‘Kavak Ağacı’;
switch (cicek) {
case ‘gül’:
case ‘yasemin’:
case ‘lale’:
case ‘papatya’:
console.log(“Evet bu yazdığın bir çiçektir.”)
break;
case ‘Kavak Ağacı’:
console.log(“Hayır bu yazdığın bir Ağaç.”)
break;
default:
console.log(‘Hayır bu bir çiçek değil.’);
}
Yukarıdaki kodda case durumlarını break kullanmadan alt alta bir nevi dizi gibi kullandık ve papatya kelimesini bu durumlar içinde aradık.
Eğer durumlardan biri eşleşirse konsol’a “Evet bu yazdığın bir çiçektir.” diye çıktı verecektir.
Eğer cicek değişkenini papatya değil de Kavak Ağacı olarak değiştirseydik ekran çıktısı “Hayır bu yazdığın bir Ağaç.” olacaktı.
Case durumunu yazıp sadece case ‘Kavak Ağacı’: olarak bıraksaydık ve değişken papatya olsaydı default kod bloğu çalışacaktı.