Karşılaştırma operatörleri

Karşılaştırma operatörleri, iki operandın değerlerini karşılaştırır ve oluşturdukları ifadenin true veya false olup olmadığını değerlendirir. Aşağıdaki örnekte, iki operandı (2 + 2 ifadesi ve 4 değeri) karşılaştırmak için tam eşitlik operatörü (===) kullanılmaktadır. İfadenin sonucu ile sayı değeri 4 aynı olduğundan bu ifade true olarak değerlendirilir:

2 + 2 === 4
> true

En sık kullanılan karşılaştırma operatörlerinden ikisi, gevşek eşitlik için == ve katı eşitlik için ==='tür. ==, mümkünse operatanları eşleşen veri türlerine zorlayarak iki değer arasında gevşek bir karşılaştırma yapar. Örneğin, karşılaştırma bir sayı değeri ile dize değeri arasında yapılsa bile 2 == "2" true değerini döndürür.

2 == 2
> true

2 == "2"
> true

Aynı durum, yalnızca karşılaştırılan operandlar yaklaşık olarak eşit değilse true döndüren != için de geçerlidir.

2 != 3
> true

2 != "2"
> false

=== veya !== kullanılan katı karşılaştırmalarda tür zorlaması yapılmaz. Katı bir karşılaştırmanın true olarak değerlendirilmesi için karşılaştırılan değerlerin aynı veri türüne sahip olması gerekir. Bu nedenle 2 == "2", true değerini döndürür ancak 2 === "2", false değerini döndürür:

2 === 3
> false

2 === "2"
> false

Otomatik zorlama nedeniyle ortaya çıkabilecek belirsizlikleri ortadan kaldırmak için mümkün olduğunda === kullanın.

Operatör Açıklama Kullanım Sonuç
=== Kesinlikle eşit 2 === 2 true
!== Tam olarak eşit değil 2 !== "2" true
== Eşit (veya "yaklaşık olarak eşit") 2 == "2" true
!= Eşit değil 2 != "3" true
> Şundan büyük: 3 > 2 true
>= Büyüktür veya eşittir 2 >= 2 true
< Küçüktür 2 < 3 true
<= Küçüktür veya eşittir 2 <= 3 true

Doğru ve yanlış

JavaScript'teki tüm değerler dolaylı olarak true veya false şeklindedir ve "gevşek eşit" karşılaştırıcı kullanılarak ilgili Boole değerine zorlanabilmektedir. Sınırlı sayıda değer false olarak zorlanmaktadır:

  • 0
  • null
  • undefined
  • NaN
  • Boş dize ("")

Bir veya daha fazla karakter içeren tüm dizler ve sıfırdan farklı tüm sayılar dahil olmak üzere diğer tüm değerler true olarak zorlanacaktır. Bunlara genellikle "doğru" ve "yanlış" değerler denir.

"My string" == true
> true

100 == true
> true

0 == true
> false

Mantıksal operatörler

İki veya daha fazla koşullu ifadenin değerlendirilmesine göre komut dosyasının akışını kontrol etmek için mantıksal VE (&&), VEYA (||) ve DEĞİL (!) operatörlerini kullanın:


2 === 3 || 5 === 5;
> true

2 === 2 && 2 === "2"
> false

2 === 2 && !"My string."
> false

Mantıksal DEĞİL (!) ifadesi, bir operandın doğru veya yanlış değerini reddeder. Operand false olarak değerlendirilirse true, true olarak değerlendirilirse false değerini döndürür:


true
> true

!true
> false

!false
> true

Sayı veya dize gibi başka bir veri türünün önünde mantıksal DEĞİL operatörünü (!) kullanmak, söz konusu değeri bir boole değerine zorlar ve sonucun doğru veya yanlış değerini tersine çevirir.

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

Verileri eşleşen mantıksal değerine hızlıca zorlamak için iki DEĞİL operatörü kullanmak yaygın bir uygulamadır:

!!"string"
> true

!!0
> false

Mantıksal AND ve OR operatörleri tek başına herhangi bir zorlama gerçekleştirmez. Değerlendirilen iki operanddan birinin değerini döndürürler. Seçilen operand, bu değerlendirmeye göre belirlenir.

Mantıksal VE (&&), iki işleneninden yalnızca işlenen false olarak değerlendiriliyorsa ilk işleneni, aksi takdirde ikinci işleneni döndürür. Boole değerlerine göre değerlendirilen karşılaştırmalarda yalnızca mantıksal VE operatörünün her iki tarafındaki operatörler true olarak değerlendirilirse true döndürülür. Her iki taraf da false olarak değerlendirilirse false döndürülür.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

&&, iki boole olmayan operatörle kullanıldığında, false değerine zorlanabiliyorsa ilk operatör değiştirilmeden döndürülür. İlk operand true olarak zorlanabiliyorsa ikinci operand değişmeden döndürülür:

false && "My string"
> false

null && "My string"
> null

"My string" && false
> false

"My string" && "My second string"
> "My second string"

2 === 2 && "My string"
> "My string"

Mantıksal VEYA (||), iki operandından yalnızca ilk operand true olarak değerlendiriliyorsa ilk operandı, aksi takdirde ikinci operandı döndürür. Boole değerlerine göre değerlendirilen karşılaştırmalarda, bu operatörlerden biri true olarak değerlendirilirse true, hiçbiri true olarak değerlendirilmezse false döndürür:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

||, iki boole olmayan operatörle kullanıldığında, true değerine zorlanabiliyorsa ilk operatörü değiştirilmeden döndürür. İlk operand false olarak zorlanabiliyorsa ikinci operand değişmeden döndürülür:

false || "My string"
> "My string"

null || "My string"
> "My string"

"My string" || false
> "My string"

"My string" || "My second string"
> "My string"

2 === 2 || "My string"
> true

Boş birleştiren operatör

ES2020'de kullanıma sunulan "boş birleştiren operatör" (??), yalnızca ilk operand null veya undefined dışında bir değere sahipse ilk operandı döndürür. Aksi takdirde ikinci operand döndürülür.

null ?? "My string"
> "My string"

undefined ?? "My string"
> "My string"

true ?? "My string";
> true

??, mantıksal VEYA operatörüne benzer ancak ilk operandın değerlendirilme şekli daha katı olur. ||, undefined ve null dahil olmak üzere false olarak zorlanabilen tüm ifadeler için ikinci operandı döndürür. ??, yalnızca ilk bağımsız değişken false olarak zorlanabilse bile ikinci bağımsız değişkeni yalnızca ilk bağımsız değişken null veya undefined ile tam olarak eşit olduğunda döndürür:

0 ?? "My string";
> 0

false ?? "My string";
> false

undefined ?? "My string";
> "My string"

Mantıksal atama operatörleri

İkinci bir operatörün değerini ilk operatöre atamak için atama operatörlerini kullanın. Bunun en yaygın örneği, tanımlanmış bir değişkene değer atamak için kullanılan tek eşittir işaretidir (=).

Bir değişkene, değişkenin doğru veya yanlış değerine göre koşullu olarak değer atamak için mantıksal atama operatörlerini kullanın.

Mantıksal VE atama (&&=) operatörü, ikinci operandı değerlendirir ve ilk operand true olarak değerlendirilirse ilk operanda atar. Diğer bir deyişle, "ilk operand doğruysa bunun yerine ikinci operandın değerini atayın:"

let myVariable = false;
myVariable &&= 2 + 2;
> false

myVariable = true;
myVariable &&= 2 + 2;
> 4

Atama işleminin yapılıp yapılmayacağını ilk operandın doğru veya yanlış değeri belirler. Ancak, ilk operandı bir karşılaştırma operatörü kullanarak değerlendirmeye çalışmak, değer atanamayan bir true veya false boole değerine neden olur:

let myVariable = 5;
myVariable > 2 &&= "My string"
> SyntaxError: Invalid left-hand side in assignment

Mantıksal VEYA atama (||=) operatörü, ikinci operandı değerlendirir ve ilk operand false olarak değerlendirilirse ilk operanda atar. Bu, "ilk operand yanlışsa bunun yerine ikinci operandın değerini atayın" anlamına gelir.

let myVariable = false;
myVariable ||= 2 + 2;
> 4

myVariable = true;
myVariable ||= 2 + 2;
> true

Öğrendiklerinizi test etme

Hangi operatör "tam olarak eşit" anlamına gelir?

==
===
!=
=