Baz durumlarda koula gre farkl eylemler yapmak isteyebilirsiniz.
"?" operatr veya if cmlesi bu koullar kontrol etmenizi salar.
if cmlesi
if cmlesi koulu alr ve kontrol eder sonucunda true ise kodu altrr.
rnein:
let yil = prompt('ECMAScript-2015 standarlar hangi yl yaynlanmtr?', '');
if (yil == 2015) alert( 'Evet doru!' );
Yukardaki rnekte if basit bir eitlii kontrol eder yil == 2015, fakat bu kontrol elbette daha karmak olabilir.
Eer birden fazla komut altrmak isterseniz bunu ssl parantez iinde yapabilirsiniz.
if (yil == 2015) {
alert( "Evet doru!" );
alert( "Bravo!" );
}
Her if kullandnzda ssl parantez kullanmanz okunurluu artracaktr. Tek satr bile yazsanz ssl parantez iinde yazmanz nerilir.
Boolean dntrme
if(...) cmlesi parantez iine yazdmz ifadeyi altrr ve bunu sonucu boolean tipinde dnderir.
Tip Dnmleri blmn hatrlarsanz:
0, bo karakter"",null,undefinedveNaNfalseolarak dndrlr. Bunlarafalsyyaniyanldeerler de diyebiliriz.- Dier deerler ise
trueolur ve bunlaratruthyveyadorudeerler de denebilir. ( Not: Bunlarn tam karlklarn bulamadm )
rnein aadaki kod satr hibir zaman almayacaktr:
if (0) { // 0 false dndrr
...
}
Aadaki ise her zaman alacaktr:
if (1) { // 1 her zaman true dndrr
...
}
Ayrca art yazmadan nce de kodun deerlendirmesi yaplabilir.
let sonuc = (year == 2015); // eitlik doru yanl deerlendirmesi yapmaya yarar.
if (sonuc) {
...
}
else cmlesi
if cmlesi opsiyonel olarak else blou da ierebilir. Bu eer if parantezi ierisinde yazdmz kod yanl ise alr.
rnein:
let yil = prompt('ECMAScript-2015 standarlar hangi yl yaynlanmtr?', '');
if (yil == 2015) {
alert( 'Doru!' );
} else {
alert( 'Nasl bu kadar yanl yapabiliyorsun!' ); // 2015 dndaki her deerde buras alr.
}
Birden fazla koul: else if
Baz durumlarda birden fazla durumu kontrol etmeniz gerekebilir. Bu durumlarda else if cmlesi kullanabilirsiniz.
rnein:
let yil = prompt('ECMAScript-2015 standarlar hangi yl yaynlanmtr?', '');
if (yil < 2015) {
alert( 'daha sonra...' );
} else if (yil > 2015) {
alert( 'daha nce' );
} else {
alert( 'Kesinlikle!' );
}
Yukardaki kodda nce yil < 2015 kontrol yaplr. Eer bu deerlendirme yanl ise bir sonraki koula geilir. Eer year > 2015 doru ise bu koul iindeki alarm fonksiyonu alr. Dier hallerde son alert fonksiyonu alr.
Sonuncusunda bir tane daha else if blou olabilirdi: else if ( yil == 2015 )
l operatr ?
Bazen alert yerine bir deikene deer atamak isteyebilirsiniz.
rnein:
let girisIzni;
let yas = prompt('Ka yandasn?', '');
if (yas > 18) {
girisIzni = true;
} else {
girisIzni = false;
}
alert(girisIzni);
l veya soru iareti operatr yukardaki ilemi daha kolay yapmanz salar.
Operatr "?" iareti ile ifade edilir. Resmi tanmda l kullanlmasnn sebebi tane operanddan olumasndan dolaydr. Aslnda JavaScript dilinde 3 tane operand olan baka bir operatr yoktur.
Yazm u ekildedir:
let sonuc = koul ? deger1 : deger2
koul deerlendirildikten sonra eer doru dner ise deger1 yanl dner ise deger2 sonu deikenine atanr.
rnein:
let girisIzni = (yas > 18) ? true : false;
Aslnda yas > 18 etrafndaki parantezleri de kaldrabiliriz. nk soru iareti > gre daha dk ncelie sahiptir. yas > 18 ? true : false eklinde yazlsa da sonu deimeyecektir.
// 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 kullanmanz nerilir. Bu okunabilirlii artrmaktadr.
Yukardaki rnekte soru iaretini kaldrmak mmkndr nk karlatrmann kendisi true/false dndrr:
// the same
let girisIzni = yas > 18;
oklu ?
Birden fazla "?" iareti kullanarak birden fazla koula gre deer dndrme ilemini salayabilirsiniz.
rneiN:
let yas = prompt('ya?', 18);
let mesaj = (yas < 3) ? 'Ne tatl eysin sen yle!' :
(yas < 18) ? 'Merhaba!' :
(yas < 100) ? 'Merhaba efendim!' :
'Ne garip bir yan var!';
alert( mesaj );
lk bata neyin ne olduunu anlamak zaman alabilir. Fakat daha yakndan baknca sra ile deerin kontrol edildiini grebilirsiniz.
- lk soru iareti
yas < 3kontroln yapar. - Eer doru ise
Ne tatl eysin sen yle!dndrr. Dier trl sonraki":"e gider veyas < 18kontroln yapar. - Eer doru ise
Merhabadndrr. Dier trl sonraki":"e gider veyas < 100kontroln yapar. - Eer doru ise
Merhaba efendimdndrr. Dier trl sonraki":"e gider ve'Ne garip bir ya'dner.
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 yan var!';
}
Geleneksel olmayan olmayan ? kontrol
Baz durumlarda '?' if in yerine kullanlabilir:
let firma = prompt('JavaScript hangi firma tarafndan yaratlmtr?', '');
(firma == 'Netscape') ?
alert('Doru!') : alert('Yanl.');
Koula gre firma =='Netscape', soru iaretinden sonra birinci blm veya ikinci blm alr.
Sonucu bir deere atanmamtr. Ama duruma gre dorudan kodu altrmak.
Soru iaretinin bu ama dorultusunda kullanlmas nerilmez.
Yazm if yazmndan daha ksa olsa bile daha az okunabilir durumdadr.
Aada if ile yazmn grmektesiniz.
let firma = prompt('JavaScript hangi firma tarafndan yaratlmtr?', '');
if (firma == 'Netscape') {
alert('Doru!');
} else {
alert('Yanl.');
}
Okurken kodu dikey olarak okuruz. Bundan dolay yazmn bir ka satra datlmas okumay uzun satrlara gre daha kolay hale getirir.
'?' iaretinin ideal kullanm sadece o ya da bu sorusudur. Daha uzun bir cmle iin if kullanmalsnz.
Yorumlar
<code>kullannz, birka satr eklemek iin ise<pre>kullann. Eer 10 satrdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)