Karşılaştırma Operatörleri
Karşılaştırma operatörlerinden büyüktür, küçüktür vb. matematiksel olanları zaten biliyorsunuzdur. Programlama dillerindeki karşılaştırma işlemlerinin hepsinin sonucu true
veya false
olarak döner. Yani Boolean
tipindedir. Şimdi karşılaştırmaları ele alalım.
İlişkisel Karşılaştırmalar ( <
, >
, =
, !
)
<
, >
, =
, !
)Bu karşılaştırmalarda <
, >
, =
, !
sembolleri kullanılır. Büyüktür, küçüktür, eşittir gibi karşılaştırmalardır. Örnek.
let sayi1 = 12;
let sayi2 = -12;
alert(sayi1 > sayi2); // true
alert(sayi1 < sayi2); //false
alert(sayi1 > sayi1); //false
alert(sayi1 < sayi1); //false
alert(sayi1 >= sayi1); //true
alert(sayi1 <= sayi1); //true
Değerlerin sayı tipinde olmasına gerek yoktur. Sayısal değerler farklı tipte olsalar da değerleri üzerinden karşılaştırılırlar.
alert('15' > '25'); // false
alert(25 > '15'); // true
alert('15' > '25'); // false
alert(true > false); //true (Boolean true=1 false=0)
alert(false > true); //false (Boolean true=1 false=0)
Javascript'te karakterler Unicode Karakter Kodlaması'na göre bit değerleri üzerinden karşılaştırılır. Örneğin:
a
U+0061
0x0061
A
U+0041
0x0041
Karakter dizisi sırayla ilk karakterden başlanarak karşılaştırılır. Bu tabloya göre karşılaştırmalar yapalım.
alert('a' > 'A'); // true
alert('TRa' > 'TRA'); //true
alert('TRK' > 'TRKS'); //false
Aynı sonuç çünkü 'TR' karakterleri ikisinde de aynı olduğu için sonuç çıkana kadar karakterleri kontrol etmeye devam eder. Sayısal olmayan değerler ile sayısal olanları karşılaştırıldığında sayısal olmayanlar NaN
değerine çevrildiği için tüm karşılaştırmalar false
olarak çıkar.
alert('a' > 1); // false
alert('a' < 1); // false
Eşitlik karşılaştırmaları iki veya üç =
sembolü ile yapılır. ==
sembolü ile sadece değer, ===
sembolü ile hem tip hem de değer karşılaştırması yapılır. Üç =
sembolü ile yapılan karşılaştırmalar sıkı karşılaştırmalardır. Tek =
sembolü atama operatörüdür karşılaştırma yapmaz. Örnek.
alert(0 == '0'); //true - Eşit mi? Evet değerler eşit.
alert(0 == 0); //true - Eşit mi? Evet değerler eşit.
alert(0 == false); //true - Eşit mi? Evet değerler eşit.
alert(0 == ''); //true - Eşit mi? Evet değerler eşit.
alert(0 === '0'); //false - Eşit mi? Hayır tipler eşit değil.
alert(0 === 0); //true - Eşit mi? Evet tipler ve değerler eşit.
alert(0 === false); //false - Eşit mi? Hayır tipler eşit değil.
alert(0 === ''); //false - Eşit mi? Hayır tipler eşit değil.
Eşitsizlik (Eşit Değil mi?) karşılaştırmaları da iki şekilde yapılır. !=
sembolü ile sadece değer !==
sembolü ile hem tip hem de değer karşılaştırması yapılır. Örnek.
alert(0 != 0 ); //false - Eşit değil mi? Hayır değerler eşit.
alert(0 != '0'); //false - Eşit değil mi? Hayır değerler eşit.
alert(0 !== '0'); //true - Eşit değil mi? Evet tipler eşit değil.
alert(0 !== 0); //false - Eşit değil mi? Hayır tipler ve değerler eşit.
Undefined
, Null
ve NaN
değerlerinin karşılaştırmaları beklenmeyen sonuçlar verebilir. Undefined
değeri karşılaştırmalarda NaN
değerine döner, Null
değeri ise 0
değerine döner. NaN
ile yapılan bütün karşılaştırmaların false
sonucunu vereceğini unutmayınız.
alert(null == '0'); //false (true vermesi beklenebilirdi.)
alert(null == 0); //false (true vermesi beklenebilirdi.)
alert(null >= 0); //true (false vermesi beklenebilirdi.)
alert(NaN === NaN); //false (true vermesi beklenmez.)
alert(undefined === NaN); //false (true vermesi beklenmez.)
Bu sebeple sıkı karşılaştırma olan ===
operatörünü kullanmanız önerilir.
Dahili Karşılaştırmalar
Dahili karşılaştırmalar dilde fonksiyon veya metotlarla yaptığımız karşılaştırmadır. Örneğin NaN
, Infinity
, Integer
vb. değerlerini kontrol etmemizi sağlayan metot veya fonksiyonlar vardır. Örnek.
let sayiOlmayan = NaN;
let sonsuz = Infinity;
let tamSayi = 10000000000000000; //
//isNaN kullanımları
alert( Number.isNaN(sayiOlmayan) ); // true (metot)
alert( isNaN(sayiOlmayan) ); // true (fonksiyon)
//isFinite
alert( Number.isFinite(sonsuz) ); // false
//isInteger
alert( Number.isInteger(tamSayi) ); // true
//isSafeInteger
alert( Number.isSafeInteger(tamSayi) ); // false - maxSafeInteger: 9007199254740991
Bu karşılaştırmalar daha önce string konusunda işlenmiştir. Karşılaştırma sonucu olarak true
false
vermektedir.
let misra = 'Ben ezelden beridir hür yaşadım, hür yaşarım.';
alert( misra.includes('hür'); //true
alert( misra.endsWith('.'); //true
alert( misra.startsWith('Ben'); //true
Bu karşılaştırmalar yine true
false
sonuç veren dahili karşılaştırmalardır. Referans Veri Tipleri konusu ile işlenecektir.
Last updated