Bazı durumlarda koşula göre farklı eylemler yapmak isteyebilirsiniz.
"?" operatörü veya if cümlesi bu koşulları kontrol etmenizi sağlar.
“if” cümlesi
“if” cümlesi koşulu alır ve kontrol eder sonucunda true ise kodu çalıştırır.
Örneğin:
let yil = prompt('ECMAScript-2015 standarları hangi yıl yayınlanmıştır?', '');
if (yil == 2015) alert( 'Evet doğru!' );
Yukarıdaki örnekte “if” basit bir eşitliği kontrol eder yil == 2015, fakat bu kontrol elbette daha karmaşık olabilir.
Eğer birden fazla komut çalıştırmak isterseniz bunu süslü parantez içinde yapabilirsiniz.
if (yil == 2015) {
alert( "Evet doğru!" );
alert( "Bravo!" );
}
Her if kullandığınızda süslü parantez kullanmanız okunurluğu artıracaktır. Tek satır bile yazsanız süslü parantez içinde yazmanız önerilir.
Boolean dönüştürme
if(...) cümlesi parantez içine yazdığımız ifadeyi çalıştırır ve bunu sonucu boolean tipinde dönderir.
Tip Dönüşümleri bölümünü hatırlarsanız:
0, boş karakter"",null,undefinedveNaNfalseolarak döndürülür. Bunlarafalsyyaniyanlışdeğerler de diyebiliriz.- Diğer değerler ise
trueolur ve bunlaratruthyveyadoğrudeğerler de denebilir. ( Not: Bunların tam karşılıklarını bulamadım )
Örneğin aşağıdaki kod satırı hiçbir zaman çalışmayacaktır:
if (0) { // 0 false döndürür
...
}
… Aşağıdaki ise her zaman çalışacaktır:
if (1) { // 1 her zaman true döndürür
...
}
Ayrıca şart yazmadan önce de kodun değerlendirmesi yapılabilir.
let sonuc = (year == 2015); // eşitlik doğru yanlış değerlendirmesi yapmaya yarar.
if (sonuc) {
...
}
“else” cümlesi
if cümlesi opsiyonel olarak “else” bloğu da içerebilir. Bu eğer if parantezi içerisinde yazdığımız kod yanlış ise çalışır.
Örneğin:
let yil = prompt('ECMAScript-2015 standarları hangi yıl yayınlanmıştır?', '');
if (yil == 2015) {
alert( 'Doğru!' );
} else {
alert( 'Nasıl bu kadar yanlış yapabiliyorsun!' ); // 2015 dışındaki her değerde burası çalışır.
}
Birden fazla koşul: “else if”
Bazı durumlarda birden fazla durumu kontrol etmeniz gerekebilir. Bu durumlarda else if cümlesi kullanabilirsiniz.
Örneğin:
let yil = prompt('ECMAScript-2015 standarları hangi yıl yayınlanmıştır?', '');
if (yil < 2015) {
alert( 'daha sonra...' );
} else if (yil > 2015) {
alert( 'daha önce' );
} else {
alert( 'Kesinlikle!' );
}
Yukarıdaki kodda önce yil < 2015 kontrolü yapılır. Eğer bu değerlendirme yanlış ise bir sonraki koşula geçilir. Eğer year > 2015 doğru ise bu koşul içindeki alarm fonksiyonu çalışır. Diğer hallerde son alert fonksiyonu çalışır.
Sonuncusunda bir tane daha else if bloğu olabilirdi: else if ( yil == 2015 )
Üçlü operatör ‘?’
Bazen alert yerine bir değişkene değer atamak isteyebilirsiniz.
Örneğin:
let girisIzni;
let yas = prompt('Kaç yaşındasın?', '');
if (yas > 18) {
girisIzni = true;
} else {
girisIzni = false;
}
alert(girisIzni);
“üçlü” veya “soru işareti” operatörü yukarıdaki işlemi daha kolay yapmanızı sağlar.
Operatör "?" işareti ile ifade edilir. Resmi tanımda “üçlü” kullanılmasının sebebi üç tane operanddan oluşmasından dolayıdır. Aslında JavaScript dilinde 3 tane operandı olan başka bir operatör yoktur.
Yazımı şu şekildedir:
let sonuc = koşul ? deger1 : deger2
koşul değerlendirildikten sonra eğer doğru döner ise deger1 yanlış döner ise deger2 sonuç değişkenine atanır.
Örneğin:
let girisIzni = (yas > 18) ? true : false;
Aslında yas > 18 etrafındaki parantezleri de kaldırabiliriz. Çünkü soru işareti > göre daha düşük önceliğe sahiptir. yas > 18 ? true : false şeklinde yazılsa da sonuç değişmeyecektir.
// the comparison operator "age > 18" executes first anyway
// (no need to wrap it into parentheses)
let girisIzni = yas > 18 ? true : false;
… Fakat yine de parantez kullanmanız önerilir. Bu okunabilirliği artırmaktadır.
Yukarıdaki örnekte soru işaretini kaldırmak mümkündür çünkü karşılaştırmanın kendisi true/false döndürür:
// the same
let girisIzni = yas > 18;
Çoklu ‘?’
Birden fazla "?" işareti kullanarak birden fazla koşula göre değer döndürme işlemini sağlayabilirsiniz.
ÖrneğiN:
let yas = prompt('yaş?', 18);
let mesaj = (yas < 3) ? 'Ne tatlı şeysin sen öyle!' :
(yas < 18) ? 'Merhaba!' :
(yas < 100) ? 'Merhaba efendim!' :
'Ne garip bir yaşın var!';
alert( mesaj );
İlk başta neyin ne olduğunu anlamak zaman alabilir. Fakat daha yakından bakınca sıra ile değerin kontrol edildiğini görebilirsiniz.
- İlk soru işareti
yas < 3kontrolünü yapar. - Eğer doğru ise
Ne tatlı şeysin sen öyle!döndürür. Diğer türlü sonraki":"e gider veyas < 18kontrolünü yapar. - Eğer doğru ise
Merhabadöndürür. Diğer türlü sonraki":"e gider veyas < 100kontrolünü yapar. - Eğer doğru ise
Merhaba efendimdöndürür. Diğer türlü sonraki":"e gider ve'Ne garip bir yaş'döner.
aynı if..else mantığı gibi
if (yas < 3) {
mesaj = 'Ne tatlı şeysin sen öyle!';
} else if (yas < 18) {
mesaj = 'Merhaba!';
} else if (yas < 100) {
mesaj = 'Merhaba efendim!';
} else {
mesaj = 'Ne garip bir yaşın var!';
}
Geleneksel olmayan olmayan ‘?’ kontrolü
Bazı durumlarda '?' if in yerine kullanılabilir:
let firma = prompt('JavaScript hangi firma tarafından yaratılmıştır?', '');
(firma == 'Netscape') ?
alert('Doğru!') : alert('Yanlış.');
Koşula göre firma =='Netscape', soru işaretinden sonra birinci bölüm veya ikinci bölüm çalışır.
Sonucu bir değere atanmamıştır. Amaç duruma göre doğrudan kodu çalıştırmak.
Soru işaretinin bu amaç doğrultusunda kullanılması önerilmez.
Yazımı if yazımından daha kısa olsa bile daha az okunabilir durumdadır.
Aşağıda if ile yazımını görmektesiniz.
let firma = prompt('JavaScript hangi firma tarafından yaratılmıştır?', '');
if (firma == 'Netscape') {
alert('Doğru!');
} else {
alert('Yanlış.');
}
Okurken kodu dikey olarak okuruz. Bundan dolayı yazımın bir kaç satıra dağıtılması okumayı uzun satırlara göre daha kolay hale getirir.
'?' işaretinin ideal kullanımı sadece o ya da bu sorusudur. Daha uzun bir cümle için if kullanmalısınız.
Yorumlar
<code>kullanınız, birkaç satır eklemek için ise<pre>kullanın. Eğer 10 satırdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)