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