JavaScript’te Strict Equality (===)

JavaScript’te kullanılan en önemli operatörlerden biri strict equality (kesin eşitlik) operatörüdür ve üç tane eşittir (===) ile gösterilir. Bu operatör, iki değeri karşılaştırma yaparken hem değerlerin hem de veri tiplerinin eşit olup olmadığını kontrol eder.

Strict Equality

Her ne kadar normal eşitlik operatörü (==) de iki değer karşılaştırılabilir olsa da veri tiplerini otomatik olarak dönüştürebilir. Type coercion olarak adlandırılan tip dönüştürme işlemi nedeniyle farklı veri tiplerine sahip iki değerin eşitliği kontrol edilirken beklenmedik sonuçlar ortaya çıkabilir. Örnek vermek gerekirse, 0 == false ifadesi true döndürürken 0 === false ifadesi ise false döndürür.

Zira strict equality operatörü iki değeri karşılaştırırken veri tiplerini dönüştürmez. Daha ziyade, veri tipleri ve değerler tamamen eşleşirse true değerini döndürür. Daha fazla örnek için aşağıdaki kodu inceleyiniz:

// == 
console.log(false == "") // true
console.log(false == []); // true
console.log("" == 0); // true
console.log("" == []); // true
console.log(0 == []); // true
console.log(0 == false); // true

// ===
console.log(false === "") // false
console.log(false === []); // false
console.log("" === 0); // false
console.log("" === []); // false
console.log(0 === []); // false
console.log(0 === false); // false

Yukarıdaki örneklerle alakalı daha detaylı bilgi için JavaScript equality table sayfasını ziyaret edebilirsiniz.

Kesin eşitlik operatörü ayrıca, NaN (Not a Number) değerleriyle de doğru bir şekilde çalışır. NaN, herhangi bir sayısal işlemin sonucunda elde edilebilen bir özel bir değerdir ve normal eşitlik operatörüyle karşılaştırılamaz. Ancak, kesin eşitlik operatörü, NaN’yi kendisiyle karşılaştırdığında, daima false döndürür.

Bilindiği üzere NaN, matematiksel işlemler sonucunda hesaplanmayan veya tanımlanamayan bir değerdir. Normal eşitlik operatörü (==) ile NaN değeri karşılaştırılamaz. Zira NaN kendisi hariç herhangi bir değerle eşit olmayan bir değerdir.

Aşağıdaki örnekte, x değişkenine NaN değeri atanır. Daha sonra normal eşitlik operatörü (==) kullanılarak x değişkeni 5’e eşit olup olmadığı kontrol edilir. Bu durumda, normal eşitlik operatörü, NaN değerini sayısal olarak tanımlamakta başarısız olur ve sonuç olarak false döndürür.

//NaN ==
let x = NaN;
console.log(x == 5); // false

Ancak aynı örnekte, kesin eşitlik operatörü (===) kullanıldığında, NaN değeri diğer herhangi bir değerle eşleştirilse bile her zaman false döndürür. Aşağıdaki örnekte, x değişkeni NaN olduğu için false döndürür.

//NaN ==
let x = NaN;
console.log(x == 5); // false

//NaN ===
let x = NaN;
console.log(x === 5); // false

Her ne kadar her iki eşitlik de false olsa da ikisi arasında fark vardır. Kesin eşitlik operatörü (===) NaN değeriyle kendisiyle karşılaştırıldığında NaN kendisine bile eşit olmadığı için false değeri döndürür. Yani, NaN ile herhangi bir değer eşit olmadığı gibi, NaN ile NaN de eşit değildir. Bu nedenle, kesin eşitlik operatörü NaN değerlerini doğru bir şekilde işler ve beklenmedik sonuçların oluşmasını engeller.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu