Mantıksal Operatörler

Mantıksal operatörler genellikle Boolean (mantıksal) değerleri ile kullanılır. Kullanıldıklarında, bir boolean değer döndürürler. Ancak, && ve || operatörleri aslında belirtilmiş olan operandlardan birinin değerini döndürür, bu sebeple eğer bu operatörler Boolean olmayan değerler ile kullanılırsa, Boolean olmayan değerler üretebilirler.

Açıklama

Mantıksal operatörler aşağıdaki tabloda açıklanıyor:

Operatör Kullanım Açıklama
Mantıksal VE (&&) expr1 && expr2 Eğer expr1 false değerine dönüştürülebilirse, expr1  döndürülür. Aksi halde, expr2 döndürülür. Böylece, Boolean değerleri ile kullanıldıklarında, && her iki operand true ise true ; aksi halde, false döndürür.
Mantıksal YA DA (||) expr1 || expr2 Eğer expr1 true değerine dönüştürülebilirse, expr1 döndürülür, aksi halde, expr2 döndürülür. Böylece, Boolean değerleri ile kullanıldıklarında, || her iki operanddan herhangi biri true ise true döndürür.
Mantıksal DEĞİL (!) !expr Eğer operandın değeri true is false döndürür, aksi alde true döndürür.

Eğer bir değer true değerine dönüştürülebiliyorsa, ona truthy ismi verilir. Eğer bir değer false değerine dönüştürülebiliyorsa, ona falsy denir.

False değerine dönüştürülebilen ifadelere örnekler:

  • null;
  • NaN;
  • 0;
  • boş string (""); 
  • undefined.

&& ve || operatörleri Boolean olmayan değerler ile kullanılabiliyor olmasına rağmen, döndürdükleri değerler her zaman Boolean değerlerine çevirilebildiğinden, halen Boolean operatörleri olarak düşünülebilirler.

Kısa-devre değerlendirmeleri

Mantıksal operatörler soldan sağa çalıştırıldıkları gibi, mümkünse aşağıdaki kurallar kullanılarak "kısa devre" testine tabi tutulurlar:

  • false && (herhangi) bir kısa devre, false değerine çevrilir.
  • true || (herhangi) bir kısa devre, true değerine çevrilir.

Mantık kuralları bu değerlendirmelerin doğruluğunu garantiler. Yukarıdaki ifadelerin tümünün çalıştırılmayacağına, bu sebeple hepsinin yan etkisinin olmayacağına dikkat edin. Ayrıca yukarıdaki ifadenin (herhangi) kısmının tamamıyla bir mantıksal ifadeye eşit olduğuna dikkat edin. (parantezler ile gösterildiği gibi).

Örneğin, aşağıdaki iki fonksiyon birbirinin aynısıdır.

function shortCircuitEvaluation() {
  doSomething() || doSomethingElse()
}

function equivalentEvaluation() {
  var flag = doSomething();
  if (!flag) {
    doSomethingElse();
  }
}

Ancak, aşağıdaki ifadeler operatör önceliğine göre eşit değildir ve sağ el operatörünün tek bir ifade olmasının önemini vurgular (gerekirse parantezler ile gruplanır).

false && true  || true      // returns true
false && (true || true)     // returns false

Mantıksal VE (&&)

Aşağıdaki kod && (mantıksal VE) operatörüyle ilgili örnekleri gösterir.

a1 = true  && true      // t && t returns true
a2 = true  && false     // t && f returns false
a3 = false && true      // f && t returns false
a4 = false && (3 == 4)  // f && f returns false
a5 = "Cat" && "Dog"     // t && t returns "Dog"
a6 = false && "Cat"     // f && t returns false
a7 = "Cat" && false     // t && f returns false
a8 = "" && false        // returns ""
a9 = false && ||        // returns false

Mantıksal YA DA (||)

Aşağıdaki kod || (mantıksal YA DA) operatörüyle ilgili örnekleri gösterir.

o1 = true  || true       // t || t returns true
o2 = false || true       // f || t returns true
o3 = true  || false      // t || f returns true
o4 = false || (3 == 4)   // f || f returns false
o5 = "Cat" || "Dog"      // t || t returns "Cat"
o6 = false || "Cat"      // f || t returns "Cat"
o7 = "Cat" || false      // t || f returns "Cat"
o8 = ""    || false      // returns false
o9 = false || ""         // returns ""

Mantıksal DEĞİL (!)

Aşağıdaki kod ! (mantıksal DEĞİL) operatörüyle ilgili örnekleri gösterir.

n1 = !true              // !t returns false
n2 = !false             // !f returns true
n3 = !"Cat"             // !t returns false

Dönüşüm kuralları

VE operatörünü YA DA operatörüne dönüştürmek

Booleanları içeren aşağıdaki ifade:

bCondition1 && bCondition2

her zaman şuna eşittir:

!(!bCondition1 || !bCondition2)

YA DA operatörünü VE operatörüne çevirmek

Booleanları içeren aşağıdaki ifade:

bCondition1 || bCondition2

her zaman şuna eşittir:

!(!bCondition1 && !bCondition2)

DEĞİL operatörleri arasında dönüşüm yapmak

Booleanları içeren aşağıdaki ifade:

!!bCondition

her zaman şuna eşittir: 

bCondition

İç içe geçmiş parantezleri kaldırmak

Mantıksal operatörlerin soldan sağa değerlendirilmesi durumunda, kompleks bir ifadeden parantezleri bazı kuralları takip ederek kaldırmak mümkündür.

İç içe geçmiş VE operatörünü kaldırmak

Aşağıda, Boolean içeren bu bileşik işlem:

bCondition1 || (bCondition2 && bCondition3)

her zaman şuna eşittir:

bCondition1 || bCondition2 && bCondition3

İç içe geçmiş YA DA operatörünü kaldırmak

Aşağıda, Boolean içeren bu bileşik ifade:

bCondition1 && (bCondition2 || bCondition3)

her zaman şuna eşittir:

!(!bCondition1 || !bCondition2 && !bCondition3)

Özellikler

Özellik Durum Açıklama
ECMAScript 1st Edition (ECMA-262) Standard İlk tanım.
ECMAScript 5.1 (ECMA-262) Standard Tarifnamenin birkaç bölümünde tanımlandı: Logical NOT Operator, Binary Logical Operators
ECMAScript 2015 (6th Edition, ECMA-262) Standard Tarifnamenin birkaç bölümünde tanımlandı: Logical NOT Operator, Binary Logical Operators
ECMAScript 2017 Draft (ECMA-262) Draft Tarifnamenin birkaç bölümünde tanımlandı: Logical NOT Operator, Binary Logical Operators

Tarayıcı Uyumluluğu

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Mantıksal VE (&&) (Yes) (Yes) (Yes) (Yes) (Yes)

Mantıksal YA DA (||)

(Yes) (Yes) (Yes) (Yes) (Yes)
Mantıksal DEĞİL (!) (Yes) (Yes) (Yes) (Yes) (Yes)
Özellik Android Android üzerinde Chrome Firefox Mobil (Gecko) IE Mobil Opera Mobil Safari Mobil
Logical AND (&&) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Logical OR (||) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)
Logical NOT (!) (Yes) (Yes) (Yes) (Yes) (Yes) (Yes)

Ayrıca bakın

Document Tags and Contributors

 Contributors to this page: umutozdemir97
 Last updated by: umutozdemir97,