Karşılaştırma operatörleri

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

2 + 2 === 4
> true

Türe baskı ve eşitlik

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

2 == 2
> true

2 == "2"
> true

Aynısı != için de geçerlidir. Bu durum, yalnızca karşılaştırılan işlenenlerin genel olarak eşit olmadığı durumlarda true değerini döndürür.

2 != 3
> true

2 != "2"
> false

=== veya !== kullanan katı karşılaştırmalar tür zorlaması gerçekleştirmez. true doğru şekilde değerlendirilebilmesi için karşılaştırılan değerlerin aynı veri türüne sahip olması gerekir. Bu nedenle, 2 == "2" true değerini, 2 === "2" ise false değerini döndürür:

2 === 3
> false

2 === "2"
> false

Otomatik baskıdan kaynaklanabilecek belirsizliği 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
!== Kesinlikle eşit değildir 2 !== "2" true
== Eşit (veya "genel olarak eşit") 2 == "2" true
!= Eşit değil 2 != "3" true
> Büyüktür 3 > 2 true
>= Büyüktür veya eşittir 2 >= 2 true
< Küçüktür 2'den 3 true
<= Küçüktür veya eşittir 2 <= 3 true

Doğru ve sahte

JavaScript'teki tüm değerler dolaylı olarak true veya false'dir ve karşılık gelen boole değerine zorlanabilir (örneğin, "genel olarak eşit" karşılaştırıcı kullanılarak). Sınırlı bir değer grubu, false değerine zorlanır:

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

Bir veya daha fazla karakter içeren tüm dizeler ve sıfır olmayan tüm sayılar da dahil olmak üzere diğer tüm değerler true değerine zorlanır. Bunlar genellikle "doğru" ve "yanlış" değerleri olarak adlandırılır.

"My string" == true
> true

100 == true
> true

0 == true
> false

Mantıksal operatörler

İki veya daha fazla koşullu ifadenin değerlendirmesine dayalı olarak bir komut dosyasının akışını kontrol etmek için mantıksal AND (&&), OR (||) ve NOT (!) operatörlerini kullanın:


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

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

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

Mantıksal bir NOT (!) ifadesi, bir işlenenin doğru veya hatalı değerini geçersiz kılar; işlenenin false olarak değerlendirildiği durumlarda true, işlenenin true olarak değerlendirilmesi durumunda ise false olarak değerlendirilir:


true
> true

!true
> false

!false
> true

Sayı veya dize gibi başka bir veri türünün önünde mantıksal NOT operatörünü (!) kullanarak bu değeri boole'ye sıkıştırır ve sonucun doğru ya da hatalı değerini tersine çevirir.

"string"
> "string"

!"string"
> false

0
> 0

!0
> true

Verileri eşleşen boole değerine hızlı bir şekilde zorlamak için iki NOT operatörü kullanmak yaygın bir uygulamadır:

!!"string"
> true

!!0
> false

Mantıksal AND ve OR operatörleri, kendi başlarına herhangi bir zorlama yapmaz. Bunlar, değerlendirilen iki işlenenden birinin değerini döndürür. Seçilen işlenen bu değerlendirme tarafından belirlenir.

Mantıksal AND (&&), yalnızca iki işlenenden ilkini, bu işlenen false olarak değerlendirilirse, ikinci işleneni aksi halde döndürür. Boole değerlerine göre değerlendirilen karşılaştırmalarda yalnızca mantıksal AND operatörünün her iki tarafındaki işlenenler true olarak değerlendirilirse true sonucunu döndürür. İki taraf da false olarak değerlendirilirse false sonucunu döndürür.

true && false
> false

false && true
> false

false && false
> false

true && true
> true

&&, boole olmayan iki işlenenle birlikte kullanıldığında, ilk işlenen, false olmaya zorlanabilirse değiştirilmeden döndürülür. İlk işlenen true olmaya zorlanabilirse ikinci işlenen değişiklik olmadan 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 OR (||), yalnızca söz konusu işlenen true olarak değerlendirilirse iki işlenenden ilkini, aksi takdirde ikinci işleneni döndürür. Boole değerlerine göre değerlendirilen karşılaştırmalarda bu, işlenenlerden biri true olarak değerlendirilirse true sonucunu döndürür ve iki taraf da true olarak değerlendirmiyorsa false sonucunu döndürür:

true || false
> true

false || true
> true

true || true
> true

false || false
> false

|| boole olmayan iki işlenenle birlikte kullanıldığında, true olmaya zorlanabilecekse değiştirilmeden ilk işleneni döndürür. İlk işlenen false olmaya zorlanabilirse ikinci işlenen değişiklik olmadan 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ştirme operatörü

ES2020'de kullanıma sunulan "boş birleştirme operatörü" (??), yalnızca işlenenin null veya undefined dışında bir değere sahip olması durumunda ilk işleneni döndürür. Aksi takdirde, ikinci işleneni döndürür.

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

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

true ?? "My string";
> true

??, mantıksal bir VEYA operatörüne benzer ancak ilk işlenenin değerlendirilme yöntemi daha katıdır. ||, undefined ve null dahil olmak üzere false olmaya zorlanabilecek herhangi bir ifade için ikinci işleneni döndürür. ??, ilk işlenenin null veya undefined dışında bir değer olduğunda ikinci işleneni döndürür (false değerine zorlanabilecek olsa bile):

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, bildirilen değişkene değer atamak için kullanılan tek eşittir işaretidir (=).

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

Mantıksal AND ataması (&&=) operatörü, ikinci işleneni değerlendirir ve yalnızca ilk işlenenin true olarak değerlendirilmesi durumunda ilk işlenene atar. Etkin bir şekilde "ilk işlenen doğruysa bunun yerine ikinci işlenenin değerini atayın:"

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

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

İlk işlenenin doğruluğu veya yanlış değeri, bir atamanın gerçekleştirilip gerçekleştirilmeyeceğini belirler. Bununla birlikte, ilk işlem gören bir karşılaştırma operatörü kullanılarak değerlendirilmeye çalışıldığında, değer atanamayan true veya false boole değeri elde edilir:

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

Mantıksal OR ataması (||=) operatörü, ikinci işleneni değerlendirir ve ilk işlenen false sonucunu döndürürse ilk işlenene atar. Böylece "ilk işlenen yanlışsa buna ikinci işlenenin değerini atayın:"

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

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

Öğrendiklerinizi sınayın

Hangi operatör "kesinlikle eşit" ifadesini belirtir?

===
==
=
!=