JavaScript'te == vs === vs typeof

JavaScript'te ==, === ve typeof operatörleri sıklıkla kullanılan özelliklerdir ve farklı amaçlara hizmet ederler. İşte bu operatörlerin kullanım amaçları ve farkları:

== Karşılaştırma Operatörü (Equality Operator)

== karşılaştırma operatörü, iki değerin eşit olup olmadığını karşılaştırır. Ancak bu operatör tip dönüşümlerine izin verir, yani karşılaştırılan değerler farklı tiplerde olsa bile otomatik olarak dönüşümler yapar. Bu bazen beklenmeyen sonuçlara yol açabilir.

Örnek:

console.log(5 == '5'); // true (Değerler eşit, tip dönüşümü yapılır)
console.log(1 == true); // true (Değerler eşit, tip dönüşümü yapılır)
console.log(0 == false); // true (Değerler eşit, tip dönüşümü yapılır)

=== Katı Eşitlik Operatörü (Strict Equality Operator)

=== katı eşitlik operatörü, hem değerleri karşılaştırır hem de tiplerini kontrol eder. Eğer değerler ve tipler eşitse true, değerler aynı olsa bile tipler farklıysa false döner.

Örnek:

console.log(5 === '5'); // false (Değerler aynı ancak tipler farklı)
console.log(1 === true); // false (Değerler aynı ancak tipler farklı)
console.log(0 === false); // false (Değerler aynı ancak tipler farklı)

typeof Operatörü

typeof operatörü, bir değişkenin veya ifadenin veri türünü döndürür. Dönüş değeri bir string'dir.

Örnek:

console.log(typeof 42); // "number"
console.log(typeof 'JavaScript'); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (Bu JavaScript'in bir hata olmasından kaynaklanır)

Sonuç

  • == operatörü sadece değerleri karşılaştırır ve tip dönüşümlerine izin verir.
  • === operatörü hem değerleri hem de tipleri karşılaştırır.
  • typeof operatörü bir değişkenin veya ifadenin veri türünü döndürür.