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
Tür zorlama ve eşitlik
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:
0nullundefinedNaN- 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?
======!=