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)