ECMAScript Eşlik Operatörleri

İki değişkenin eşit olup olmadığını belirlemek, program tasarımında çok önemli bir işlemdir. Temel değerleri işlemek için bu işlem oldukça basittir, ancak nesneleri içerirse, görev biraz daha karmaşık hale gelir.

ECMAScript, iki takım eşitlik işlevsel işaret sunar: Eşit işaret ve farklı işaret, temel değerleri işlemek için kullanılır, tam eşit işaret ve tam farklı işaret, nesneleri işlemek için kullanılır.

Eşit işaret ve farklı işaret

ECMAScript'te, eşit işaret çift işaret (==) ile temsil edilir. İki işlevsel sayı eşitse, true döner. Farklı işaret, hayır işareti ile işaret (!=) ile temsil edilir. İki işlevsel sayı farklıysa, true döner. İki işlevsel sayıyı eşit mi değil mi belirlemek için, bu iki işaret tip dönüştürme yapar.

Tip dönüştürme kuralları şu şekildedir:

  • Bir işlevsel sayı Boolean değerse, eşitlik kontrolü öncesi Boolean'ı sayıya dönüştürün. false 0'a, true 1'e dönüştürülür.
  • Bir işlevsel sayı string ise, diğeri sayı ise, eşitlik kontrolü öncesi dizgeyi sayıya dönüştürmeye çalışın.
  • Bir işlevsel sayı object ise, diğeri string ise, eşitlik kontrolü öncesi nesneyi stringe dönüştürmeye çalışın.
  • Bir işlevsel sayı object ise, diğeri sayı ise, eşitlik kontrolü öncesi nesneyi sayıya dönüştürmeye çalışın.

Karşılaştırma sırasında, bu işlevsel işaret aşağıdaki kurallara uygundur:

  • null ve undefined değerleri eşittir.
  • Eşitlik kontrolü sırasında, null ve undefined'ı diğer değerlere dönüştüremezsiniz.
  • Bir işlevsel sayı NaN ise, eşit işaret false döner, eşit değil işaret true döner.
  • İki işlevsel sayı object ise, karşılaştırılan referans değerleridir. Eğer iki işlevsel sayı aynı objeye işaret ediyorsa, eşit işaret true döner, aksi takdirde iki işlevsel sayı eşit değildir.

Önemli Uyarı:İki sayı NaN ise bile, eşit işareti false döner çünkü kurallara göre, NaN NaN'e eşittir.

Aşağıdaki tablo, bazı özel durumları ve sonuçlarını listeler:

ifade değer
null == undefined true
"NaN" == NaN false
5 == NaN false
NaN == NaN false
NaN != NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
"5" == 5 true

Tam Eşit ve Tam Eşitsiz İşaretler

Eşit işaret ve eşitsiz işaretin benzeri operatörler, tam eşit işaret ve tam eşitsiz işarettir. Bu iki operatör, eşit işaret ve eşitsiz işaretle aynı şeyi yapar, sadece eşitlik kontrolü yapmadan önce tür dönüşümü yapmazlar.

Eşit işaret, üç eşit işaretle gösterilir (===), sadece tür dönüşümü olmadan operatörler eşitse true döner.

Örneğin:

var sNum = "66";
var iNum = 66;
alert(sNum == iNum);	// Çıktı "true"
alert(sNum === iNum);	// Çıktı "false"

Bu kod parçasında, ilk alert, dize "66" ve sayı 66'yi eşit işaretle karşılaştırarak "true" çıktı verir. Daha önce belirtildiği gibi, bu, dize "66"'nin sayı 66'ya dönüştürülmesi nedeniyle olur. İkinci alert, tür dönüşümü olmadan dize ve sayıyı eşit işaretle karşılaştırır, tabii ki dize ve sayı eşit değildir, bu nedenle "false" çıktı verir.

Eşitsiz işaret, iki eşit işaretin yanında bir ünlem işareti ile (!==) gösterilir, sadece tür dönüşümü olmadan operatörler farklıysa true döner.

Örneğin:

var sNum = "66";
var iNum = 66;
alert(sNum != iNum);	// Çıktı "false"
alert(sNum !== iNum);	// Çıktı "true"

Burada, ilk alert kullanımı, dize "66"'yi sayı 66'ya dönüştüren eşitsiz işaret ile, ikinci operatörle 66'ya eşit olan "66" ile karşılaştırır. Bu nedenle, hesaplama sonucu "false" olur, çünkü iki operatör eşittir. İkinci alert, eşitsiz işareti kullanır. Bu işlem, "sNum" ile "iNum" farklı mı sorusunu sorar. Bu sorunun cevabı: Evet (true), çünkü sNum bir dize, iNum ise bir sayıdır ve tabii ki farklıdırlar.