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:
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?
==
===
!=
=