switch - case - break

Javascript'te bu ifadeleri yazarken küçük harflerle yazdığınıza emin olunuz.

switch ile if benzer işlemler için kullanılır. if koşula göre switch duruma göre çalışır. Örnek.

let gun = prompt('Lütfen 1-7 arasında bir sayı giriniz','1');

switch (gun) {
    case '1': alert('Pazartesi'); break;
    case '2': alert('Salı'); break;
    case '3': alert('Çarşamba'); break;
    case '4': alert('Perşembe'); break;
    case '5': alert('Cuma'); break;
    case '6': alert('Cumartesi'); break;
    case '7': alert('Pazar'); break;
}

switch - case ile tiplerin önemi vardır. Sıkı eşitlik kullanır. prompt ile aldığımız her verinin string tipinde olduğunu biliyoruz. O halde deneyelim.

let gun = prompt('Lütfen 1-7 arasında bir sayı giriniz','1');

switch (gun) {
    case 1: alert('Pazartesi'); break;
    case 2: alert('Salı'); break;
    case 3: alert('Çarşamba'); break;
    case 4: alert('Perşembe'); break;
    case 5: alert('Cuma'); break;
    case 6: alert('Cumartesi'); break;
    case 7: alert('Pazar'); break;
}
//hiçbir uyarı vermez.

Yukarıdaki örnekten hiçbir uyarı alamazsınız çünkü gun değişkeninin veri tipi string ve biz number tipinde karşılaştırmalar yaptık. switch deyimi sıkı eşitlik kullandığı için hiçbir durum gerçekleşmedi.

switch - case yapısında bir durumun gerçekleşmesi ile yürütme başlar ve ilk break komutuna kadar kodlar yürütülür. Bu sebeple her duruma break komutu koymak gereklidir. Örnek.

let trafikLambasi = 'Sarı';
switch (trafikLambasi) {
    case 'Kırmızı':
        alert('BEKLE');
    case 'Sarı':
        alert('HAZIR OL');
    case 'Yeşil':
        alert('İLERLE');
}

Yukarıdaki örneği 'Yeşil' yaparak denerseniz sadece 'İLERLE' uyarısı alırsınız. 'Kırmızı' yaparsanız tüm durumlardaki uyarılar çalışır. Deneyebilirsiniz.

switch yapısında case ile ifade ettiğiniz hiçbir durum gerçekleşmez ise default deyimi ile durum gerçekleşmesine bağlı olmadan kodlar yürütebilirsiniz. En sonda yazılması gereklidir. Örnek.

let httpRes = '301';
switch (httpRes) {
    case '200':
        alert('BAĞLANTI BAŞARILI');
        break;
    case '404':
        alert('SAYFA BULUNAMADI!');
        break;
    case '500':
        alert('SUNUCU HATASI');
        break;
    default: // hiçbir case ile uyuşmadığı için burası çalışır.
        alert('Bilinen bir http durumu belirtilmedi.');  
}

case Gruplama

Bazı durumlarda aynı şeyleri yapmak gerekiyorsa kodları tekrar etmeye gerek kalmadan case deyimlerini alt alta yazarak gruplayabilirsiniz. Örnek.

let ay = prompt('Küçük harflerle bir ay ismi giriniz:', '');
switch (ay) {
    case 'aralık':
    case 'ocak':
    case 'şubat':
        alert('Kış mevsimindesiniz.');
        break;
    case 'mart':
    case 'nisan':
    case 'mayıs':
        alert('İlkbahar mevsimindesiniz.');
        break;
    case 'haziran':
    case 'temmuz':
    case 'ağustos':
        alert('Yaz mevsimindesiniz.');
        break;
    case 'eylül':
    case 'ekim':
    case 'kasım':
        alert('Sonbahar mevsimindesiniz.');
        break;
    default:
        alert('Doğru bir şekilde giriş yapmadınız.');  
}

switch ile if kullanımının bazı farkları aşağıda verilmiştir.

ifswitch

Koşula göre çalışır. Koşul her zaman Boolean tipindedir.

Duruma göre çalışır. Durum herhangi bir tipte olabilir.

Yürütülecek kodları koşula göre if - else - else if ile farklılaştırırız.

Yürütülecek kodları duruma göre case - default ile farklılaştırırız.

Değişken tipleri önemsizdir. Koşuldaki ifadeye göre Boolean sonuç üzerinden kodlar yürütülür.

Değişken tipleri önemlidir. Durumdaki değer ve tip üzerinden kodlar yürütülür.

Gerçekleşen koşul ile ilgili blok yürütülür.

Gerçekleşen durumla birlikte ilk break komutuna kadar kodlar yürütülür.

Koşullarda <=, >=, !=, !==, == veya === ile karşılaştırmalar yapabiliriz.

Durumlarda her zaman sıkı karşılaştırma (===) yapılır.

Koşullar mantıksal operatörler ile birbirine bağlanır.

Durumlar gruplanarak birbirine bağlanır.

Hiçbir koşul gerçekleşmez ise else deyimi ile kod bloğu yürütebiliriz.

Hiçbir durum gerçekleşmez ise default deyimi ile kodlarımızı yürütebiliriz.

Last updated